Usando le caselle Meta di WordPress per costruire un plugin SEO di base

Una delle funzionalità principali fornite da WordPress nell'estensione della sua funzionalità è la sua Meta Box API. Queste caselle consentono di aggiungere facilmente dati aggiuntivi ai tuoi contenuti. Ad esempio, il Post Tags meta box ti consente di impostare i tag per il tuo post.

In questo articolo, costruiremo un plugin SEO di base che aggiunge una descrizione meta e un tag Open title e description to the capo elemento delle pagine di WordPress. Nel fare ciò, impareremo anche come creare una meta box personalizzata, come sanificare i dati forniti dall'utente, come salvare i dati in un post o pagina e come recuperare e recuperare i dati salvati.

Perché non spiegherò ogni singolo bit di ciò che i codici usano in questo tutorial, una conoscenza di base dei meta-box e di ciò che le funzioni PHP fanno. Se non hai familiarità con le nozioni di base, allora un ottimo inizio in Come creare WordPress Write / Meta Box personalizzati.

Creare la Meta Box

Per prima cosa, dobbiamo decidere dove dovrebbe apparire la meta-box. 

Nel nostro plugin, la meta box verrà aggiunta nel inviare e pagina schermo. Per ottenere ciò, viene creata una funzione contenente una variabile che memorizza un array di dove mostrare la meta-scatola e a per ciascuno loop che loop attraverso la matrice e aggiungere la meta-box allo schermo dato usando il add_meta_box funzione. 

E infine, la funzione è agganciata al add_meta_boxes azione.

function tes_mb_create () / ** * @array $ screens Scrive lo schermo su cui mostrare la meta box * @values ​​post, pagina, dashboard, link, allegato, custom_post_type * / $ screens = array ('post', 'page' ); foreach ($ schermi come $ screen) add_meta_box ('tes-meta', 'Elenco motore di ricerca', 'tes_mb_function', $ screen, 'normal', 'high');  add_action ('add_meta_boxes', 'tes_mb_create');

In alternativa, puoi aggiungere un doppio add_meta_box funzione per includere la meta-box sia nella schermata di posta che in quella di pagina in questo modo:

funzione tes_mb_create () add_meta_box ('tes-meta', 'Elenco motore di ricerca', 'tes_mb_function', 'post', 'normal', 'high'); add_meta_box ('tes-meta', 'Elenco motore di ricerca', 'tes_mb_function', 'page', 'normal', 'high');  add_action ('add_meta_boxes', 'tes_mb_create');

Codifica dei campi della casella Meta

Dal codice sopra riportato, la funzione di callback per stampare l'HTML per la sezione di schermo di modifica viene indicata come tes_mb_function che è il terzo argomento passato add_meta_box funzione.

Nel nostro plug-in, stiamo solo codificando due campi modulo HTML per gestire i dati Titolo e Descrizione.

funzione tes_mb_function ($ post) / / recupera i valori dei metadati se esistono $ tes_meta_title = get_post_meta ($ post-> ID, '_tes_meta_title', true); $ tes_meta_description = get_post_meta ($ post-> ID, '_tes_meta_description', vero); // Aggiungi un campo nonce in modo che possiamo verificarlo in seguito durante la convalida di wp_nonce_field ('tes_inner_custom_box', 'tes_inner_custom_box_nonce'); eco '
Tag del titolo:
Meta Description:
';

La spiegazione del tes_mb_function il codice sopra è il seguente:

  • Recupera e archivia i valori dei metadati in una variabile solo se esiste. Questo viene fatto per popolare i campi con i suoi valori quando è presente nel database.
  • Viene aggiunto un feed nonce in modo che possiamo verificarlo in seguito durante la verifica prima che i dati inseriti nei campi del modulo vengano salvati nel database.
  • Il modulo HTML costituito da un elemento di input del campo di testo e un'area di testo per la cattura dei dati del titolo e del tag di descrizione viene riprodotto / stampato.

A questo punto, dovresti vedere la meta-box nella schermata del post e della pagina.


Salvataggio dei dati della casella Meta

Una meta box non è completa fino a quando non può salvarla nel database. Il nome della funzione per gestire il salvataggio dei dati sarà tes_mb_save_data. Il suo codice è il seguente.

funzione tes_mb_save_data ($ post_id) / * * Abbiamo bisogno di verificare che questo provenga dal nostro schermo e con autorizzazione appropriata, * perché save_post può essere attivato in altri momenti. * / // Controlla se il nostro nonce è impostato. if (! isset ($ _POST ['tes_inner_custom_box_nonce'])) restituisce $ post_id; $ nonce = $ _POST ['tes_inner_custom_box_nonce']; // Verifica che il nonce sia valido. if (! wp_verify_nonce ($ nonce, 'tes_inner_custom_box')) restituisce $ post_id; // Se si tratta di un salvataggio automatico, il nostro modulo non è stato inviato, quindi non vogliamo fare nulla. if (definito ('DOING_AUTOSAVE') && DOING_AUTOSAVE) restituisce $ post_id; // Controlla le autorizzazioni dell'utente. if ('page' == $ _POST ['post_type']) if (! current_user_can ('edit_page', $ post_id)) restituisce $ post_id;  else if (! current_user_can ('edit_post', $ post_id)) restituisce $ post_id;  / * OK, è sicuro per noi salvare i dati ora. * / // Se esistono voci vecchie, recuperale $ old_title = get_post_meta ($ post_id, '_tes_meta_title', true); $ old_description = get_post_meta ($ post_id, '_tes_meta_description', true); // Disinstalla l'input dell'utente. $ title = sanitize_text_field ($ _POST ['tes_meta_title']); $ description = sanitize_text_field ($ _POST ['tes_meta_description']); // Aggiorna il meta campo nel 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');

Esaminiamo il codice precedente:

  • Per prima cosa, verifichiamo che questo provenga dal nostro schermo e con autorizzazione adeguata, perché save_post può essere attivato in altri momenti e anche verificare che il nonce precedentemente impostato in tes_mb_function è valido.
  • Quindi, se una voce esiste già nel database, la recupereremo e la archiveremo $ OLD_TITLE e $ old_description variabile. Lo stiamo facendo perché il update_post_meta la funzione che salva i dati nel database richiede facoltativamente un vecchio valore da verificare prima di aggiornare la riga del database del meta box con i nuovi valori.
  • Successivamente, i dati inviati vengono disinfettati utilizzando WordPress ' sanitize_text_field funzione che converte l'HTML nella sua entità, elimina tutti i tag, rimuove le interruzioni di linea, le schede e lo spazio bianco extra, elimina gli ottetti.
  • I meta dati vengono aggiornati al database tramite update_post_meta.
  • Finalmente, il tes_mb_save_data è agganciato al save_post azione per salvare i dati del meta-box quando il post o la pagina viene aggiornato.

Fare uso dei dati salvati

Non dimenticare, i dati salvati devono essere utilizzati per aggiungere un titolo e una descrizione di Open Graph e il tag meta description nella capo elemento di ogni pagina.

Per fare ciò, creeremo una funzione chiamata tes_mb_display che conterrà i tag desiderati e in seguito, agganciarli  wp_head azione.

funzione tes_mb_display () global $ post; // recupera i valori dei metadati se esistono $ tes_meta_title = get_post_meta ($ post-> ID, '_tes_meta_title', true); $ tes_meta_description = get_post_meta ($ post-> ID, '_tes_meta_description', vero); eco '      ';  add_action ('wp_head', 'tes_mb_display'); 
  • Per rilevare correttamente l'ID del post, prendiamo un riferimento al post utilizzando il $ postale oggetto globale.
  • I meta dati vengono quindi recuperati dal database e salvati nel $ tes_meta_title e $ tes_meta_description variabili, rispettivamente. 
  • Successivamente, abbiamo definito il meta tag da inserire nel modello capo elemento.
  • Infine, colleghiamo la funzione a wp_head.

Se hai aggiunto e salvato un titolo e una descrizione su un post o una pagina, la visualizzazione di quell'origine della pagina dovrebbe rivelare la presenza del tag Open Graph e del tag description insieme alla meta description utilizzata dai motori di ricerca.

Sommario

In questo articolo abbiamo creato un plugin SEO di base che aggiunge una descrizione meta e tag Open Graph utilizzati dai social network dei motori di ricerca alla sezione di intestazione di WordPress.

Abbiamo imparato come creare i meta box, forma i campi, sanifica i dati prima di salvarli nel database e recuperare i dati salvati per l'uso.
Un ulteriore compito per saperne di più su questo processo: Estendi questo plugin e aggiungi un campo meta keyword al modulo metabox e includilo tra i tag che vengono inseriti nell'intestazione di WordPress.