WordPress-metaboxen gebruiken om een ​​eenvoudige SEO-plug-in te bouwen

Een van de belangrijkste functies van WordPress voor het uitbreiden van de functionaliteit is de Meta Box API. Met deze metabox kunt u gemakkelijk extra gegevens toevoegen aan uw inhoud. Bijvoorbeeld de Post Tags Meta Box stelt je in staat om tags in te stellen voor je bericht.

In dit artikel zullen we een eenvoudige SEO-plug-in bouwen die een metabeschrijving toevoegt en een Open Graph-titel en beschrijvingstag aan de hoofd element van WordPress-pagina's. Daarbij leren we ook hoe we aangepaste metaboxen kunnen maken, hoe door gebruikers verstrekte gegevens schoongemaakt kunnen worden, hoe de gegevens in een post of pagina kunnen worden opgeslagen en hoe de opgeslagen gegevens kunnen worden opgehaald en opgehaald..

Omdat ik niet alles zal uitleggen wat de codes gebruiken in deze tutorial, wordt uitgegaan van een basiskennis van metaboxen en wat de PHP-functies doen. Als u niet bekend bent met de basisprincipes, dan is dit een goed begin bij het maken van aangepaste WordPress Write / Meta Boxes.

De metabox maken

Eerst moeten we beslissen waar de metabox moet verschijnen. 

In onze plug-in wordt de metabox toegevoegd in de post en pagina scherm. Om dit te bereiken, wordt een functie gemaakt met een variabele die een array opslaat van waar de metabox wordt weergegeven en een foreach loop die door de array loopt en de metabox toevoegt aan het gegeven scherm met behulp van de add_meta_box functie. 

En tot slot is de functie verslaafd aan de add_meta_boxes actie.

functie tes_mb_create () / ** * @array $ schermen Schrijfscherm waarop de metabox getoond moet worden * @ values ​​post, page, dashboard, link, attachment, custom_post_type * / $ screens = array ('post', 'page' ); foreach ($ schermen als $ scherm) add_meta_box ('tes-meta', 'Search Engine Listing', 'tes_mb_function', $ screen, 'normal', 'high');  add_action ('add_meta_boxes', 'tes_mb_create');

U kunt ook een dubbele toevoegen add_meta_box functie om de metabox op zowel het post- als het paginescherm op te nemen zoals:

functie tes_mb_create () add_meta_box ('tes-meta', 'Search Engine Listing', 'tes_mb_function', 'post', 'normal', 'high'); add_meta_box ('tes-meta', 'Search Engine Listing', 'tes_mb_function', 'page', 'normal', 'high');  add_action ('add_meta_boxes', 'tes_mb_create');

Codering van de meta-boxvelden

Uit de bovenstaande code wordt de callback-functie voor het afdrukken van de HTML voor het bewerkingsschermgedeelte aangeduid als tes_mb_function dat is het derde argument dat is aangenomen add_meta_box functie.

In onze plug-in coderen we slechts twee HTML-formuliervelden om de titel- en beschrijvingsgegevens te verwerken.

function tes_mb_function ($ post) / / haal de metadata-waarden op als ze bestaan ​​$ tes_meta_title = get_post_meta ($ post-> ID, '_tes_meta_title', true); $ tes_meta_description = get_post_meta ($ post-> ID, '_tes_meta_description', true); // Voeg een nonce-veld toe zodat we dit later kunnen controleren bij het valideren van wp_nonce_field ('tes_inner_custom_box', 'tes_inner_custom_box_nonce'); echo '
Titel-tag:
Meta omschrijving:
';

De uitleg van de tes_mb_function code hierboven is als volgt:

  • Haal de metagegevenswaarden op in een variabele en sla deze alleen op als deze bestaat. Dit wordt gedaan om de velden met zijn waarden te vullen wanneer deze aanwezig zijn in de database.
  • Er is een nonce-feed toegevoegd, zodat we deze later tijdens verificatie kunnen controleren voordat de gegevens die in de formuliervelden zijn ingevoegd, worden opgeslagen in de database.
  • Het HTML-formulier bestaande uit een tekstveldinvoerelement en een tekstgebied voor het vastleggen van de titel- en beschrijvingstaggegevens wordt geëchood / afgedrukt.

Op dit punt zou je de metabox in het bericht- en paginavenster moeten zien.


Meta Box-gegevens opslaan

Een metabox is niet compleet totdat deze de gegevens in de database kan opslaan. De naam van de functie voor het opslaan van gegevens is tes_mb_save_data. De code is als volgt.

functie tes_mb_save_data ($ post_id) / * * We moeten verifiëren dat dit afkomstig was van ons scherm en met de juiste autorisatie, * omdat save_post op andere momenten kan worden geactiveerd. * / // Controleer of onze nonce is ingesteld. als (! isset ($ _POST ['tes_inner_custom_box_nonce'])) $ post_id retourneert; $ nonce = $ _POST ['tes_inner_custom_box_nonce']; // Controleer of de nonce geldig is. if (! wp_verify_nonce ($ nonce, 'tes_inner_custom_box')) retourneert $ post_id; // Als dit een automatische opslag is, is ons formulier niet ingediend, dus we willen niets doen. if (defined ('DOING_AUTOSAVE') && DOING_AUTOSAVE) retourneert $ post_id; // Controleer de machtigingen van de gebruiker. if ('page' == $ _POST ['post_type']) if (! current_user_can ('edit_page', $ post_id)) retourneert $ post_id;  else if (! current_user_can ('edit_post', $ post_id)) retourneert $ post_id;  / * OK, het is veilig voor ons om de gegevens nu op te slaan. * / // Als er oude items zijn, haal ze dan op $ old_title = get_post_meta ($ post_id, '_tes_meta_title', true); $ old_description = get_post_meta ($ post_id, '_tes_meta_description', true); // Sanitaire gebruikersinvoer. $ title = sanitize_text_field ($ _POST ['tes_meta_title']); $ description = sanitize_text_field ($ _POST ['tes_meta_description']); // Werk het metaveld bij in de database. update_post_meta ($ post_id, '_tes_meta_title', $ title, $ old_title); update_post_meta ($ post_id, '_tes_meta_description', $ description, $ old_description);  add_action ('save_post', 'tes_mb_save_data');

Laten we de bovenstaande code eens bekijken:

  • Eerst controleren we of dit afkomstig is van ons scherm en met de juiste autorisatie, omdat save_post kan op andere momenten worden geactiveerd en ook controleren of de nonce eerder is ingesteld tes_mb_function is geldig.
  • Als er dan al een item in de database bestaat, halen we het op en slaan we het op $ OLD_TITLE en $ old_description variabel. We doen dit omdat het update_post_meta functie die de gegevens opslaat in de database vereist optioneel een oude waarde die moet worden gecontroleerd voordat de metabox-databaserij wordt bijgewerkt met de nieuwe waarden.
  • Hierna worden de ingediende gegevens ontsmet met WordPress ' sanitize_text_field functie die HTML naar zijn entiteit converteert, alle tags verwijdert, regeleinden verwijdert, tabbladen en extra witte ruimte, strip-octetten verwijdert.
  • De metagegevens worden via de database bijgewerkt naar de database update_post_meta.
  • eindelijk, de tes_mb_save_data is verslaafd aan de save_post actie om de metabox-gegevens op te slaan wanneer het bericht of de pagina wordt bijgewerkt.

Gebruik maken van de opgeslagen gegevens

Vergeet niet dat de opgeslagen gegevens moeten worden gebruikt bij het toevoegen van een Open Graph-titel en beschrijving, evenals de metabeschrijvingstag in de hoofd element van elke pagina.

Om dit te doen, zullen we een functie met de naam creëren tes_mb_display die de gewenste tags bevat en daarna aansluit  wp_head actie.

function tes_mb_display () global $ post; // haal de metadata-waarden op als ze bestaan ​​$ tes_meta_title = get_post_meta ($ post-> ID, '_tes_meta_title', true); $ tes_meta_description = get_post_meta ($ post-> ID, '_tes_meta_description', true); echo '      ';  add_action ('wp_head', 'tes_mb_display'); 
  • Om de post-ID met succes te detecteren, nemen we een verwijzing naar de post met behulp van de $ bericht object globaal.
  • De metagegevens worden vervolgens uit de database opgehaald en in de database opgeslagen $ tes_meta_title en $ tes_meta_description variabelen, respectievelijk. 
  • Vervolgens hebben we de metatag gedefinieerd die in de sjabloon moet worden ingevoegd hoofd element.
  • Ten slotte haken we de functie aan wp_head.

Als je een titel en beschrijving hebt toegevoegd en opgeslagen voor een bericht of pagina, zou het bekijken van die paginabron de aanwezigheid van de titel- en beschrijvingstag Open Graph naast de metabeschrijving moeten onthullen die wordt gebruikt door zoekmachines..

Samenvatting

In dit artikel hebben we een eenvoudige SEO-plug-in gemaakt die een metabeschrijving toevoegt en Open Graph-tags gebruikt door sociale netwerken van zoekmachines in de koptekst van WordPress..

We leerden hoe we metaboxen konden maken, het vormden velden, zuiverden de gegevens voordat ze in de database werden opgeslagen en haalden de opgeslagen gegevens op voor gebruik.
Een extra opdracht om meer te leren over dit proces: Breid deze plug-in uit en voeg een meta-trefwoordveld toe aan het metabox-formulier en neem het ook op tussen de tags die in de WordPress-header zijn ingevoegd.