De activeringsbibliotheek van de plug-in voor TGM gebruiken in uw thema's

Thema's zijn niet bedoeld als functioneel, maar als themaontwikkelaars moeten we meestal enkele functies toevoegen om ons thema een beetje beter te maken en een functie, weet je, functioneel. 

In deze zelfstudie gaan we een korte blik werpen op de term "plugin-territorium" en leren we een fantastische tool te gebruiken die is geschreven door Thomas Griffin: de TGM-plugin-activeringsbibliotheek.

Thema-functionaliteit: Invading Plugin Territory

Thema's zijn bedoeld om het ontwerp van uw WordPress-website te veranderen. In het ideale geval zou het moeten zijn zichtbaar. Maar in deze gouden eeuw van WordPress bevatten themaontwikkelaars vaak functionele kenmerken in hun thema's om concurrerend te blijven in de markt. Dit moest het zijn, maar dat is het wel.

Dit is de invasie van het gebied van de plug-in. We kunnen "plugin-territorium" in eenvoudige termen definiëren: functionele delen van code bevinden zich binnen de grenzen van dit territorium. Elk stukje code dat de functionaliteit van uw website verandert, moet als een plug-in worden geserveerd, als dit nog niet in de WordPress-kern is gedaan. 

In een van mijn vorige berichten (in de serie "Making the Perfect WordPress Theme"), noemde ik de vuistregel van het "plugin-gebied":

Als de functie over de uiterlijk van de website, zou het in het thema moeten staan, maar als het om de functionaliteit van een website, moet deze als afzonderlijke plug-in worden opgenomen.

Makkelijk genoeg, toch? 

Hoewel mensen nog steeds de neiging hebben om functionele bits in hun thema's te coderen, accepteren themadirectory's (zoals WordPress.org en ThemeForest) geen thema's die het "invoeggebied" binnendringen. Dus het is een probleem geworden om functionaliteit met thema's aan te bieden.

Gelukkig is er een vrij eenvoudige oplossing en het gaat niet in tegen de regel "plugin-territorium".

Introductie van de TGM Plugin Activation Library

Activering van TGM-plug-ins is een lichtgewicht bibliotheek met het doel thema's te bundelen met plug-ins. Het idee is eenvoudig: wanneer een gebruiker uw thema installeert, worden de plug-ins voor gebruikers geïnstalleerd vanuit WordPress.org, een externe website of de themamap. Dit is wat Thomas Griffin, de maker van de bibliotheek, deze handige kleine tool definieert:

Activering van TGM-plug-in is een PHP-bibliotheek waarmee u gemakkelijk plug-ins voor uw WordPress-thema's (en plug-ins) kunt vragen of aanbevelen. Hiermee kunnen uw gebruikers plug-ins op singuliere of bulk manier installeren en zelfs automatisch activeren met behulp van native WordPress-klassen, functies en interfaces. U kunt verwijzen naar voorverpakte plug-ins, plug-ins van de WordPress Plugin Repository of zelfs plug-ins die elders op het internet worden gehost.

Dit is waarschijnlijk de slimste oplossing voor het probleem van "plug-ins grondgebiedinvasie". En het is ook vrij eenvoudig aan te brengen. 

Laten we eens kijken!

De activering van de TGM-plug-in installeren

Het installeren van de activering van de TGM-plug-in is ongelooflijk eenvoudig. Volg gewoon deze stappen:

  • Download de TGM-plugin-activeringsbibliotheek in het gedeelte "Downloaden" van de pagina.
  • Open het zipbestand en pak het uit class-TGM-plugin-activation.php in je themamap (waar je maar wilt).
  • Open uw thema's functions.php bestand en gebruik de eenmalig benodigd() functie om het klassenbestand (één keer) in uw thema te vereisen.
  • Maak een functie om de activering van de activering van de TGM te configureren en aan te sluiten tgmpa_register via de add_action () functie.
  • Gedaan!

Het is zo eenvoudig dat je geen ingewikkelde PHP-code nodig hebt om plug-ins te vereisen of aan te bevelen. Bekijk de onderstaande code:

Vanaf nu kunt u uw gebruikers nieuwe plug-ins laten installeren door de $ plugins variabele in de functie die u zojuist hebt gemaakt. 

Laten we kijken hoe het gedaan is.

Plug-ins installeren met activering van activering van TGM-plug-in

Zoals je hierboven kunt zien, is de $ plugins variabele is een array. En om plug-ins te definiëren die u wilt installeren, moet u arrays binnen die array maken (zodat u hun eigen parameters kunt instellen). Klinkt hard, maar het is niet:

Er zijn een aantal parameters om te gebruiken:

  • naam (string, verplicht) - De naam van de plug-in.
  • naaktslak (string, verplicht) - De slug van de plug-in (meestal de mapnaam).
  • verplicht (Boolean, vereist) - Als dit is ingesteld op waar, uw thema zal de plug-in "nodig" hebben. Als vals, het thema zal het "aanbevelen".
  • bron (string, soms vereist) - De bron van de plug-in. Als het een WordPress.org-plug-in is, mag deze parameter niet worden gebruikt; anders is het verplicht.
  • versie (string, optioneel) - De minimale versie vereist voor de plug-in. Bijvoorbeeld; als de themagebruiker al een vereiste plug-in heeft geïnstalleerd maar niet het minimale versienummer heeft dat u hebt opgegeven, waarschuwt de activering van de activering van de TGM de gebruiker om deze bij te werken.
  • force_activation (Boolean, optioneel) - Indien ingesteld op waar, de gebruiker kan de plug-in niet deactiveren zolang uw thema actief is. Een beetje vervelend, maar in sommige scenario's kan dit nodig zijn.
  • force_deactivation (Boolean, optioneel) - Indien ingesteld op waar, de plug-in wordt gedeactiveerd zodra de gebruiker van thema wisselt.
  • external_url (string, optioneel) - Indien ingesteld, wordt de naam van de plug-in gekoppeld aan dit adres in de kennisgeving van de plug-in.

U hebt drie opties om uw gebruikers plug-ins te laten installeren met activering van de plug-in voor TGM: u kunt een plug-in nodig hebben uit de WordPress-invoegtoepassingsdirectory, uit een externe bron (zoals uw eigen server of een CDN), of uit uw themamap (zoals /my-theme/plugins/shortcodes.zip).

Vereist een plug-in van WordPress.org

 'BuddyPress', 'slug' => 'buddypress', 'verplicht' => false, // deze plug-in wordt aanbevolen)); ?>

Een plug-in vereisen van een externe bron

 'My Awesome Plugin', 'slug' => 'my-awesome-plugin', 'source' => 'http://files.my-website.com/my-awesome-plugin.zip', 'required' = > true, // deze plugin is vereist 'external_url' => 'http://my-website.com/introducing-my-awesome-plugin', // pagina van mijn plug-in 'force_deactivation' => true, // deactivate deze plug-in wanneer de gebruiker overschakelt naar een ander thema)); ?>

Een plug-in vereisen van de themadirectory

 'Mijn Super Slank Slider', 'slug' => 'my-super-slank-slider', 'source' => get_stylesheet_directory (). '/lib/plugins/my-super-sleek-slider.zip', // De "interne" bron van de plug-in. 'required' => true, // deze plugin is vereist 'version' => '1.2', // de gebruiker moet versie 1.2 (of hoger) van deze plugin gebruiken 'force_activation' => false, // deze plugin gaat om geactiveerd te blijven, tenzij de gebruiker overschakelt naar een ander thema)); ?>

De activering van de TGM-plug-in configureren

Let op de tgmpa () functie met twee parameters aan het einde van onze voorbeeldcode? De tweede parameter is de $ config variabele die toevallig ook een array is, net als de $ plugins parameter. Zoals de naam al doet vermoeden, kunt u de TGM Plugin Activation-bibliotheek met deze array configureren. Het heeft ook zijn eigen reeks opties die je moet instellen:

  • ID kaart (string) - Een unieke ID voor de TGM Plug-in Activatiebibliotheek die u hebt geïmplementeerd in uw thema. Dit is eigenlijk heel belangrijk: als een andere plug-in ook TGM-plug-inactivering gebruikt, zouden de verschillende ID's conflicten voorkomen.
  • default_path (string) - Het standaard absolute pad voor plug-ins in uw thema. Wanneer u dit instelt, kunt u gewoon de naam van het ZIP-bestand gebruiken als bron parameter voor uw plug-in.
  • menu (string) - De menu slug voor de plug-in installatiepagina.
  • has_notices (boolean) - indien ingesteld op waar, admin-meldingen worden getoond voor vereiste / aanbevolen plug-ins.
  • weggeklikt (boolean) - indien ingesteld op waar, de gebruiker kan de berichten "sluiten".
  • dismiss_msg (string) - Als de dismissable optie is ingesteld op false, dit bericht wordt boven de beheerderskennisgeving weergegeven.
  • is_automatic (boolean) - indien ingesteld op waar, plug-ins worden geactiveerd nadat de gebruiker ermee instemt ze te installeren.
  • bericht (tekenreeks) - Optionele HTML die vóór de tabel met plug-ins wordt weergegeven.
  • strings (array) - Nog een andere rangschikking dat omvat de berichten die moeten worden weergegeven. Je kunt ze ook instellen als vertaalbare tekenreeksen. Bekijk de example.php bestand om de volledige lijst met berichtreeksen te zien.
 'mytheme-tgmpa', // uw unieke TGMPA-ID 'default_path' => get_stylesheet_directory (). '/ lib / plugins /', // standaard absoluut pad 'menu' => 'mytheme-install-required-plugins', // menu slug 'has_notices' => true, // Show admin notices 'dismissable' => false , // de mededelingen zijn NIET af te sluiten 'dismiss_msg' => 'Ik heb echt, echt nodig om deze plug-ins te installeren, oké?', // dit bericht wordt uitgevoerd boven aan de top 'is_automatic' => waar, // automatisch activeer plug-ins na installatie 'message' => '', // bericht voor uitvoer direct voor de plugins-tabel' strings '=> array (); // De reeks berichtstrings die door TGM-plug-inactivering wordt gebruikt); ?>

Alles inpakken

Zoals u kunt zien, is het helemaal niet onmogelijk om functionaliteit te bieden met WordPress-thema's - u moet gewoon aan de gebruikers denken wanneer zij van uw thema naar een ander overschakelen. De TGM-plugin-activeringsbibliotheek biedt een heel slimme manier om het via het boek te spelen.

Wat vind je van deze tool? Heb je het ooit gebruikt of ben je van plan het in de toekomst te gebruiken? Vertel ons wat je denkt door hieronder te reageren. En als je dit artikel leuk vond, vergeet dan niet om het met je vrienden te delen!