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.
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');
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:
Op dit punt zou je de metabox in het bericht- en paginavenster moeten zien.
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:
save_post
kan op andere momenten worden geactiveerd en ook controleren of de nonce eerder is ingesteld tes_mb_function
is geldig.$ 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.sanitize_text_field
functie die HTML naar zijn entiteit converteert, alle tags verwijdert, regeleinden verwijdert, tabbladen en extra witte ruimte, strip-octetten verwijdert.update_post_meta
.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.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');
$ bericht
object globaal.$ tes_meta_title
en $ tes_meta_description
variabelen, respectievelijk. hoofd
element.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..
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.