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 der Taxonomiebegriffe als H1 in meiner Taxonomiearchivvorlage 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.
Endgültiger Code
Dies ist, was ich 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>
quelle
$tag_id
.get_queried_object()->term_id
Stattdessen musste ich verwenden , dassget_query_var()
der erste die ID und der zweite den Slug zurückgibt, sodass der Code „undefinierten Index“ anzeigt. Achten Sie auch darauf zu überprüfen , ob es ist alles Set an$meta['post_tag|category']
, wie Sie undefinierten Index bemerkt auch bekommen. (WP 4.2.2, übrigens)Fügen Sie auf der Archivseite im Postloop die folgende Codezeile hinzu, damit es funktioniert
Sagen Sie mir, ob es für Sie funktioniert, oder ich werde eine andere Lösung anbieten.
quelle
Abrufen des Schlüsselworts focus 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:
Dies ist im Grunde der Ansatz, den Mike am Ende seines Beitrags verfolgt.
oder
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
können Sie testen wollenif class_exists( 'WPSEO_Taxonomy_Meta' )
und dann wickeln vielleicht die Yoast Funktion in eine functon der eigenen, für den Fall , sicher zu sein waren Sie jemals mit Yoast SEO auf der ganzen Linie zu stoppen.Etwas Hintergrund
Wie in der ursprünglichen Frage erwähnt,
get_post_meta( $tag->term_id, '_yoast_wpseo_focuskw', true);
funktioniert etwas 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
wp_postmeta
wie gewohnt in der Tabelle gespeichert zu werden , ist siewp_options
als JSON-Objekt tief in der Tabelle vergraben .Mit den obigen Methoden können wir auf diese Werte zugreifen.
Wenn Sie wie ich sind und sich nicht an den Namen von Taxonomien erinnern können (z. B .: Es ist nicht klar, warum Tags Taxonomie verwenden
post_tag
und nicht nurtag
, überprüfen Sie einfach die URLs, wenn Sie eine Kategorie oder ein Tag bearbeiten: es wird…taxonomy=category…
oder angezeigt dergleichen.quelle
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'];
quelle