Adaugă tag-uri <meta/> în secțiunea <head> prin functions.php

2 feb. 2018, 23:45:25
Vizualizări: 47.1K
Voturi: 17

Am dezvoltat o temă personalizată care este în principiu un site de tip broșură cu 4 pagini pentru un client și am reușit să elimin câteva plugin-uri prin implementarea de tipuri de postări personalizate, compresie gzip prin .htaccess și minificare prin gulp etc.

Voi păstra plugin-ul de securitate pe site, dar aș dori să elimin Yoast, singurul beneficiu pe care îl aduce, având în vedere cât de optimizat este site-ul, este că îmi permite să adaug tag-uri meta și snippet-uri pentru fiecare pagină în scopuri SEO.

Există vreo funcție pe care o pot adăuga în fișierul functions.php care să-mi permită să adaug tag-uri <meta> la diferite pagini folosind ID-ul paginii?

Când cauți pe Google acest subiect, tot ce găsești sunt articole despre plugin-uri sau informații despre meta-date generale WordPress.

Orice ajutor ar fi extraordinar.

Paul.

0
Toate răspunsurile la întrebare 3
1
30

Hook-ul pe care îl cauți este specific wp_head și ar putea arăta cam așa:

function theme_xyz_header_metadata() {
    
    // Obiectul post dacă este necesar
    // global $post;
    
    // Condiție pentru pagină dacă este necesar
    // if( is_page() ){}
    
  ?>
    
    <meta name="abc" content="xyz" />
    
  <?php
    
}
add_action( 'wp_head', 'theme_xyz_header_metadata' );

Cred totuși că pe termen lung, deoarece WordPress este foarte portabil, Yoast SEO este probabil cea mai fiabilă și flexibilă soluție pentru SEO decât ceva ce ai putea face singur, așa că personal aș recomanda împotriva acestei abordări.

2 feb. 2018 23:51:53
Comentarii

Cred că Yoast nu permite adăugarea mai multor meta tag-uri gratuit

Imad Imad
28 ian. 2022 05:53:22
0

SEO făcut de tine:

1: În editorul de postări/pagini pentru o pagină sau postare: Adaugă câmpuri personalizate (meta date) cu valorile necesare pentru tag-urile tale SEO meta.

  • de exemplu, deschide pagina "Termeni și Condiții" în editorul de pagini și adaugă un câmp personalizat "my_noindex" cu valoarea "y".
  • Notă: dacă caseta cu câmpuri personalizate nu este vizibilă sub editor, dă clic pe meniul drop-down "opțiuni de afișare" din partea de sus a paginii și apoi bifă caseta "câmpuri personalizate" care apare.

2: În functions.php (sau mai bine, într-un plugin site_functions independent de tema ta): Adaugă funcția ta SEO (care va fi "apelată" de wp_head) care preia aceste valori pentru pagina curentă și le inserează în secțiunea HTML <head>.

// afișează tag-ul noindex dacă postarea sau pagina are un câmp personalizat "my_noindex" cu valoarea "y"|"Y"|"da" ...
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, deci nu are rost să faci alte operații SEO
   }

   // alte operații SEO

}
add_action( 'wp_head', 'my_meta_tags',2);

Articolul lui Jeff Starr despre crearea propriului cod SEO (inclusiv titlu și descriere) te va ajuta. Acesta necesită o temă personalizată/child theme deoarece codul său se adaugă în header.php, dar mare parte din cod poate fi modificat pentru funcția my_meta_tags de mai sus. Poate că nu aplică SEO exact cum vrei tu, dar asta e frumusețea DIY: dacă vrei să folosești descrierea pe care ai creat-o cu grijă într-un câmp personalizat (dacă există), altfel excerpt-ul personalizat, altfel primii n caractere din descriere; atunci poți scrie codul în consecință. Am avut și eu intenția să scriu un articol pe această temă - dacă reușesc, voi adăuga un link.

Omisiuni din codul articolului:

  • Prevenirea tag-urilor de titlu duplicate (deoarece unele teme își adaugă propriile). Temele moderne, proiectate corect, ar trebui să îți permită să elimini tag-ul de titlu al temei când adaugi următoarele în functions.php al site-ului tău.

    function my_remove_stuff() {
      remove_theme_support( 'title-tag' ); 
    }
    add_action('after_setup_theme', 'my_remove_stuff', 15);
    
  • Tag-uri Canonical. Adaugă următoarele în prima funcție de mai sus:

    // dacă postarea sau pagina are un câmp personalizat "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'); // previne inserarea unui tag canon de către WordPress - nu vrem două
    endif;
    

Un plugin SEO este opțiunea potrivită pentru mulți utilizatori. Cu toate acestea, dacă ești confortabil să scrii propriul cod, există multe beneficii: eviți încărcarea excesivă, eviți dependența de plugin, eviți (în unele cazuri) plata pentru suport, SEO funcționează exact cum vrei tu; nu există conflicte SEO pe paginile tale dinamice personalizate etc.

3 feb. 2018 03:29:05
0
-1

Puteți adăuga meta tag-uri direct în fișierul functions.php al temei WordPress prin conectarea la acțiunea wp_head. Iată cum puteți adăuga meta tag-uri personalizate pentru diferite pagini folosind ID-urile acestora:

Adăugați acest cod în fișierul functions.php al temei:

function custom_meta_tags() {
    if (is_page()) {
        global $post;
        $page_id = $post->ID;

        switch ($page_id) {
            case 2: // Înlocuiți cu ID-ul real al Paginii
                echo '<meta name="description" content="Descriere pentru Pagina 2">';
                echo '<meta name="keywords" content="cuvant-cheie1, cuvant-cheie2, cuvant-cheie3">';
                break;
            case 5: // Înlocuiți cu ID-ul real al Paginii
                echo '<meta name="description" content="Descriere pentru Pagina 5">';
                echo '<meta name="keywords" content="cuvant-cheie4, cuvant-cheie5, cuvant-cheie6">';
                break;
            // Adăugați mai multe cazuri după necesitate
            default:
                echo '<meta name="description" content="Descriere implicită">';
                echo '<meta name="keywords" content="implicit, cuvinte-cheie">';
                break;
        }
    }
}
add_action('wp_head', 'custom_meta_tags');
3 feb. 2018 12:14:10