wake-up-neo.net

Zeigen Sie Yoast WordPress SEO-Titel in der Archivvorlage an

Das WordPress SEO-Plugin von Yoast ermöglicht es Benutzern, SEO-Titel und Meta-Beschreibungen zu Taxonomie-Termarchivseiten hinzuzufügen. Diese werden dann im Kopf des Dokuments verwendet.

Ich versuche, den SEO-Titel von Taxonomie-Begriffen als H1 in meiner Taxonomie-Archivvorlage anzuzeigen.

Dies in einem Beitrag, Beitragstyp oder einer Seite zu tun, ist einfach:

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

Bei Archivvorlagen funktioniert das nicht.

Weiß jemand, wie man das zum Laufen bringt?

Screenshot Beispiel

Dies ist der Titel eines bestimmten Tag-Begriffs. Ich versuche, diesen Titel - allerdings für einen benutzerdefinierten Taxonomiebegriff - in meinen Archivvorlagen anzuzeigen.

The tag archive edit screen

Endgültiger Code

Dies ist, was ich letztendlich in meiner archive.php-Vorlage verwendet habe. Es funktioniert, wenn Sie eine benutzerdefinierte Taxonomie verwenden. Tags oder Kategorien finden Sie in der Antwort von Mike Madern weiter unten.

<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>  
11
Mattvic

Holen Sie sich Archiv SEO-Titel

Wenn Sie einen benutzerdefinierten Beitragstyp-Archivtitel definiert haben, können Sie diesen folgendermaßen abrufen:

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

echo apply_filters( 'the_title', $title );

Denken Sie daran, POST_TYPE durch Ihren eigenen benutzerdefinierten Beitragstyp zu ersetzen.

Um alle wpseo_title-Variablen anzuzeigen, können Sie Folgendes verwenden:

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

So können Sie ganz einfach die auswählen, die Sie benötigen.

Holen Sie sich Term SEO-Titel

Kategorien

Mit diesem Code erhalten Sie den von Ihnen definierten SEO-Titel:

$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 );

Stichworte

Mit diesem Code erhalten Sie den von Ihnen definierten SEO-Titel:

$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 );

Um alle wpseo_taxonomy_meta Variablen anzuzeigen, können Sie Folgendes verwenden:

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

Auf diese Weise können Sie die Struktur und die verfügbaren Variablen anzeigen.

15
Mike Madern

Fügen Sie auf der Archivseite im Postloop die folgende Codezeile hinzu, damit es funktioniert

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

Sagen Sie mir, ob es für Sie funktioniert, oder ich werde eine andere Lösung anbieten.

5
Vinod Dalvi

Abrufen des focus-Schlüsselworts für Kategorien und Tags

Um das Schlüsselwort focus einer Kategorie oder eines Tags programmgesteuert abzurufen, können Sie eine der beiden folgenden Methoden verwenden:

            /** 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'];
                }
            }

Dies ist im Grunde der Ansatz, den Mike am Ende seines Beitrags verfolgt.

oder

            /** 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' );
                }
            }

Ich bevorzuge in der Regel den zweiten Ansatz, da ich auf diese Weise die Metaoption nicht selbst abrufen oder kaufen muss.

In Ihrem functions.php möchten Sie möglicherweise if class_exists( 'WPSEO_Taxonomy_Meta' ) testen und dann die Yoast-Funktion in eine eigene Funktion einwickeln, um sicherzugehen, dass Sie Yoast SEO später nicht mehr verwenden.

Etwas Hintergrund

Wie in der ursprünglichen Frage erwähnt, funktioniert etwas wie get_post_meta( $tag->term_id, '_yoast_wpseo_focuskw', true); nicht für Kategorien und Seiten (es wird nichts zurückgegeben.)

Warum ist das so?

Dies liegt daran, dass für Kategorien und Tags das Schlüsselwort focus an einer anderen Stelle in der Datenbank gespeichert wird. Anstatt wie üblich in der wp_postmeta -Tabelle gespeichert zu werden, ist sie tief in der wp_options -Tabelle als JSON-Objekt vergraben.

Mit den obigen Methoden können wir auf diese Werte zugreifen.


Schließlich, wenn Sie wie ich sind und sich nicht an den Namen von Taxonomien erinnern können (zB: Es ist nicht klar, warum Tags Taxonomie post_tag und nicht nur tag verwenden, überprüfen Sie einfach die URLs, wenn Sie eine Kategorie oder ein Tag bearbeiten: it zeige …taxonomy=category… o.ä.

0

Antworten Das Fokus-Schlüsselwort für Kategorien und Tags erhalten

// es funktioniert danke
// mit ruhe api

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

plugin.in benutze Methode 1

zeile ändern

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

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

0
Chaiiz Rataphan