Visualizza il tuo titolo SEO per WordPress nel modello di archivio


14

Il plugin SEO WordPress di Yoast consente agli utenti di aggiungere titoli SEO e meta descrizioni alle pagine di archivio dei termini di tassonomia. Questi vengono quindi utilizzati nella testa del documento.

Sto cercando di visualizzare il titolo SEO dei termini di tassonomia come H1 nel mio modello di archivio di tassonomia.

Per fare questo in un post, tipo di post o pagina è facile:

echo get_post_meta($post->ID, '_yoast_wpseo_title', true); 

Sui modelli di archivio questo non funziona.

Qualcuno sa come farlo funzionare?

Esempio di schermata

Questo è il titolo di un termine tag specifico. Sto cercando di visualizzare questo titolo - ma poi per un termine di tassonomia personalizzato - nei miei modelli di archivio.

La schermata di modifica dell'archivio tag

Codice finale

Questo è quello che ho finito per usare nel mio archive.phpmodello. Funziona se stai usando una tassonomia personalizzata. Per tag o categorie dai un'occhiata alla risposta di Mike Madern di seguito.

<h1 class="archive-title">
<?php
if ( is_tax() ) :                                                                   
    $taxonomy = get_queried_object()->taxonomy;
    $term_id = get_queried_object()->term_id;
    $meta   = get_option( 'wpseo_taxonomy_meta' );
    $title  = $meta[$taxonomy][$term_id]['wpseo_title'];
    //printf( '<pre>%s</pre>', print_r( get_option( 'wpseo_taxonomy_meta' ), 1 ) );
    if ( isset($meta) && !empty($title) ) :         
        echo apply_filters( 'the_title', $title );
    else :
        single_term_title();    
    endif;
endif;                              
?>
</h1>  

Risposte:


19

Ottieni titoli SEO Archive

Se hai definito un titolo di archivio Tipo di messaggio personalizzato puoi ottenerlo:

$titles = get_option( 'wpseo_titles' );
$title  = $titles['title-ptarchive-POST_TYPE'];

echo apply_filters( 'the_title', $title );

Ricorda di sostituire POST_TYPEcon il tuo tipo di posta personalizzato.

Per visualizzare tutte le wpseo_titlevariabili, è possibile utilizzare:

printf( '<pre>%s</pre>', print_r( get_option( 'wpseo_titles' ), 1 ) );

Quindi puoi facilmente scegliere quello che ti serve.

Ottieni titoli SEO a termine

categorie

Usando questo codice puoi ottenere il titolo SEO che hai definito:

$cat_id = get_query_var( 'cat' );
$meta   = get_option( 'wpseo_taxonomy_meta' );

$title  = $meta['category'][$cat_id]['wpseo_title'];

echo apply_filters( 'the_title', $title );

tag

Usando questo codice puoi ottenere il titolo SEO che hai definito:

$tag_id = get_query_var( 'tag' );
$meta   = get_option( 'wpseo_taxonomy_meta' );

$title  = $meta['post_tag'][$tag_id]['wpseo_title'];

echo apply_filters( 'the_title', $title );

Per visualizzare tutte le wpseo_taxonomy_metavariabili, è possibile utilizzare:

printf( '<pre>%s</pre>', print_r( get_option( 'wpseo_taxonomy_meta' ), 1 ) );

In questo modo puoi vedere la struttura e le variabili disponibili.


Hai aggiunto il titolo in SEO > titoli e metas > Tipi di post ?
Mike Madern,

Ho migliorato la mia risposta con la soluzione :-)
Mike Madern

Immagino che ti sia sfuggita la mia ultima modifica al post: -PI ha aggiunto una versione con $tag_id.
Mike Madern,

1
Grazie mille per il codice, non sarei mai riuscito a capirlo. Ho apportato alcune modifiche minori per farlo funzionare con tassonomie personalizzate.
Mattvic

Questo è fantastico Ho dovuto usare get_queried_object()->term_id, invece, get_query_var()però, poiché il primo restituisce l'id, il secondo restituisce la lumaca, facendo in modo che il codice passi avvisi "indice indefinito". Inoltre, fare attenzione a controllare se ci sia qualche cosa insieme a $meta['post_tag|category'], come avrete Avvertenze Indice indefiniti pure. (WP 4.2.2, btw)
cabgfx,

5

Nella pagina di archivio in post loop aggiungi la seguente riga di codice per farlo funzionare

echo get_post_meta(get_the_ID(), '_yoast_wpseo_title', true); 

Dimmi se funziona per te o fornirò un'altra soluzione.


Purtroppo non ha funzionato. Mostra il titolo SEO del primo post nell'archivio. Probabilmente dovrò immergermi nel DB per vedere dove sono memorizzati questi dati.
Mattvic

Lo stai usando in loop? Puoi mostrarmi il codice?
Vinod Dalvi,

Ho aggiunto il mio codice. Non sono sicuro se ho spiegato che volevo produrre il titolo della pagina, non i titoli di ciascun post nel ciclo.
Mattvic

Questo e 'esattamente quello che stavo cercando. Emette il titolo SEO nel loop. Inoltre, ho sostituito get_the_ID () con $ post-> ID
gerbz

questo mi salva la vita. bene ..
Mukii kumar il

0

Ottenere la parola chiave focus per categorie e tag

Per ottenere la parola chiave focus di una categoria o tag a livello di codice, è possibile utilizzare uno di questi due metodi:

            /** Method 1. Tap into the options directly. **/
            $meta = get_option( 'wpseo_taxonomy_meta' ); // needed only once, so keep this outside/before your foreach loop.

            $posttags = get_the_tags();
            if ($posttags) {
                foreach( $posttags as $tag ) {
                    echo $meta['post_tag'][$tag->term_id]['wpseo_focuskw'];
                }
            }

Questo è fondamentalmente l'approccio utilizzato da Mike alla fine del suo post.

o

            /** Method 2. Use Yoast's function. **/
            $posttags = get_the_tags();
            if ($posttags) {
                foreach( $posttags as $tag ) {
                    echo WPSEO_Taxonomy_Meta::get_term_meta( $tag->term_id, 'post_tag', 'focuskw' );
                }
            }

Tendo a preferire il secondo approccio perché in questo modo non devo recuperare o preoccuparmi di ottenere me stesso l'opzione meta.

Nel tuo functions.php, potresti voler testare if class_exists( 'WPSEO_Taxonomy_Meta' )e quindi avvolgere la funzione Yoast in una tua funzione, per sicurezza se dovessi smettere di usare Yoast SEO in futuro.

Qualche sfondo

Come menzionato nella domanda originale, qualcosa del genere get_post_meta( $tag->term_id, '_yoast_wpseo_focuskw', true);non funzionerà per categorie e pagine (non restituirà nulla).

Allora perché?

Questo perché, per categorie e tag, la parola chiave focus viene salvata altrove nel database. Invece di essere salvato all'interno del wp_postmetatavolo come al solito, è sepolto nel profondo del wp_optionstavolo, come un oggetto JSON.

I metodi sopra riportati ci consentono di accedere a questi valori.


Infine, se sei come me e non ricordi il nome delle tassonomie (ad esempio: non è ovvio il motivo per cui i tag usano la tassonomia post_tage non solo tag, controlla gli URL quando modifichi una categoria o un tag: mostrerà …taxonomy=category…o il simile.


0

Rispondi Ottenere la parola chiave focus per categorie e tag

// funziona grazie
// con il resto api

get / wp-json / wp / v2 / categorie? slug =slug_name

plugin.in usa il Metodo 1

cambia linea

$meta['post_tag'][$tag->term_id]['wpseo_focuskw'];

$meta['category'][$param_post_id]['wpseo_focuskw'];

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.