Aggiungere tag <meta/> alla sezione <head> tramite functions.php
Ho sviluppato un tema personalizzato che è essenzialmente un sito brochure di 4 pagine per un cliente e sono riuscito a eliminare alcuni plugin implementando custom-post-types, compressione gzip tramite .htaccess e minificazione tramite gulp ecc.
Manterrò il plugin di sicurezza sul sito, ma vorrei rimuovere Yoast, poiché l'unico beneficio che porta, considerando quanto è già ottimizzato il sito, è che mi permette di aggiungere i tag meta
e snippet per ogni pagina per scopi SEO.
Esiste una funzione che posso aggiungere al mio file functions.php che mi permetta di inserire tag <meta>
in diverse pagine tramite l'ID della pagina?
Quando si cerca questo argomento su Google si trovano solo articoli sui plugin o informazioni generali sui meta di WordPress.
Qualsiasi aiuto sarebbe fantastico.
Paul.
L'hook che stai cercando è specificatamente wp_head
che potrebbe essere simile a questo:
function theme_xyz_header_metadata() {
// Oggetto post se necessario
// global $post;
// Condizionale per pagina se necessario
// if( is_page() ){}
?>
<meta name="abc" content="xyz" />
<?php
}
add_action( 'wp_head', 'theme_xyz_header_metadata' );
Credo però che a lungo termine, dato che WordPress è così portabile, Yoast SEO sia probabilmente la soluzione più affidabile e flessibile per l'SEO rispetto a qualcosa che potresti fare da solo, quindi personalmente sconsiglierei questo approccio.

SEO fai da te:
1: Nell'editor di post/pagine per una pagina o post: Aggiungi campi personalizzati (meta dati) con i valori richiesti per i tuoi meta tag SEO.
- Ad esempio, apri la tua pagina "Termini e condizioni" nell'editor di pagine e
aggiungi un campo personalizzato "
my_noindex
" con il valore "y". - Nota: se la casella dei campi personalizzati non è visibile sotto l'editor, clicca sul menu a discesa "opzioni di visualizzazione" nella parte superiore della pagina e poi sulla casella di controllo "campi personalizzati" che appare.
2: In functions.php (o meglio ancora nel tuo plugin site_functions indipendente dal tema): Aggiungi la tua funzione SEO (da "chiamare" con wp_head) che prende questi valori per la pagina corrente e li inserisce nell'HTML <head>
.
// echo noindex tag se il post o la pagina ha un campo personalizzato "my_noindex" con valore "y"|"Y"|"yes" ...
function my_meta_tags() {
$noindex = (get_post_meta( get_queried_object_id(), 'my_noindex', true ));
if (strtolower(substr($noindex,0,1)) == 'y') {
?><meta name="robots" content="noindex" />
<?php return; // noindex quindi non ha senso fare altre operazioni SEO
}
// altre operazioni SEO
}
add_action( 'wp_head', 'my_meta_tags',2);
L'articolo di Jeff Starr sul creare il proprio codice SEO (incluso titolo e descrizione) ti sarà utile. Richiede un tema personalizzato/child poiché il codice va in header.php, tuttavia gran parte del codice potrebbe essere modificato per la funzione my_meta_tags sopra. Potrebbe non applicare il SEO nel modo che desideri, ma questa è la bellezza del fai da te: se vuoi usare la tua descrizione accuratamente creata in un campo personalizzato (se presente), altrimenti il tuo estratto personalizzato, altrimenti i primi n caratteri della descrizione; allora puoi scrivere il tuo codice di conseguenza. Avevo anche intenzione di scrivere un articolo su questo argomento - se ci riuscirò aggiungerò un link.
Omessioni dal codice dell'articolo:
Previeni tag titolo duplicati (poiché alcuni temi inseriscono i propri). Temi moderni e progettati correttamente dovrebbero permetterti di rimuovere il tag titolo del tema quando aggiungi quanto segue al tuo functions.php.
function my_remove_stuff() { remove_theme_support( 'title-tag' ); } add_action('after_setup_theme', 'my_remove_stuff', 15);
Tag Canonical. Aggiungi quanto segue alla prima funzione sopra:
//se il post o la pagina ha un campo personalizzato "my_canon" $my_canon = get_post_meta( get_queried_object_id(), 'my_canon', true ); if ( ! empty($my_canon)) : echo '<link rel="canonical" href="' . $my_canon . '" />'; remove_action('wp_head', 'rel_canonical'); // previene che Wordpress inserisca un tag canon - non ne vogliamo due endif;
Un plugin SEO è l'opzione giusta per molti utenti. Tuttavia, se sei felice di scrivere il tuo codice ci sono molti vantaggi: evita il bloat, evita la dipendenza da un plugin, evita (in alcuni casi) di pagare per il supporto, il SEO funziona come vuoi tu; nessun problema di conflitto SEO con le tue pagine dinamiche personalizzate, ecc.

Puoi aggiungere meta tag direttamente al file functions.php del tuo tema WordPress utilizzando l'azione wp_head. Ecco come puoi aggiungere meta tag personalizzati per diverse pagine utilizzando i loro ID:
Aggiungi questo codice al file functions.php del tuo tema:
function custom_meta_tags() {
if (is_page()) {
global $post;
$page_id = $post->ID;
switch ($page_id) {
case 2: // Sostituisci con l'ID effettivo della tua Pagina
echo '<meta name="description" content="Descrizione per la Pagina 2">';
echo '<meta name="keywords" content="parola1, parola2, parola3">';
break;
case 5: // Sostituisci con l'ID effettivo della tua Pagina
echo '<meta name="description" content="Descrizione per la Pagina 5">';
echo '<meta name="keywords" content="parola4, parola5, parola6">';
break;
// Aggiungi altri casi secondo necessità
default:
echo '<meta name="description" content="Descrizione predefinita">';
echo '<meta name="keywords" content="parole, predefinite">';
break;
}
}
}
add_action('wp_head', 'custom_meta_tags');
