Aggiungere tag <meta/> alla sezione <head> tramite functions.php

2 feb 2018, 23:45:25
Visualizzazioni: 47.1K
Voti: 17

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.

0
Tutte le risposte alla domanda 3
1
30

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.

2 feb 2018 23:51:53
Commenti

Penso che Yoast non permetta di aggiungere più meta tag gratuitamente

Imad Imad
28 gen 2022 05:53:22
0

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.

3 feb 2018 03:29:05
0
-1

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');
3 feb 2018 12:14:10