Le plugin WordPress SEO de Yoast permet aux utilisateurs d'ajouter des titres SEO et des méta descriptions aux pages d'archives des termes de taxonomie. Celles-ci sont ensuite utilisées en tête du document.
J'essaie d'afficher le titre SEO des termes de taxonomie en tant que H1 dans mon modèle d'archive de taxonomie.
Pour ce faire, dans une publication, un type de publication ou une page, rien de plus simple:
echo get_post_meta($post->ID, '_yoast_wpseo_title', true);
Sur les modèles d'archives, cela ne fonctionne pas.
Est-ce que quelqu'un sait comment faire fonctionner cela?
Exemple de capture d'écran
Il s'agit du titre d'un terme de balise spécifique. J'essaie d'afficher ce titre - mais ensuite pour un terme de taxonomie personnalisé - dans mes modèles d'archives.
Code final
C'est ce que j'ai fini par utiliser dans mon archive.php
modèle. Cela fonctionne si vous utilisez une taxonomie personnalisée. Pour les tags ou les catégories, consultez la réponse de Mike Madern ci-dessous.
<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>
la source
$tag_id
.get_queried_object()->term_id
, au lieu deget_query_var()
cela, car le premier retourne l'identifiant, le second renvoie le slug, ce qui fait que le code envoie des remarques «index non défini». Aussi, prenez soin de vérifier s'il est quelque chose ensemble à$meta['post_tag|category']
, comme vous obtenez des avis d'index non définis ainsi. (WP 4.2.2, btw)Sur la page d'archive dans la boucle de post, ajoutez la ligne de code suivante pour le faire fonctionner
Dites-moi si cela fonctionne pour vous ou je fournirai une autre solution.
la source
Obtention du mot clé focus pour les catégories et les balises
Pour obtenir le mot clé focus d'une catégorie ou d'une balise par programme, vous pouvez utiliser l'une des deux méthodes suivantes:
C'est essentiellement l'approche utilisée par Mike à la fin de son post.
ou
J'ai tendance à préférer la deuxième approche parce que de cette façon, je n'ai pas à chercher ou à me soucier d'obtenir la méta-option moi-même.
Dans votre cas
functions.php
, vous voudrez peut-être testerif class_exists( 'WPSEO_Taxonomy_Meta' )
, puis peut-être envelopper la fonction Yoast dans un functon, pour être sûr au cas où vous deviez cesser d'utiliser Yoast SEO en fin de compte.Quelques antécédents
Comme mentionné dans la question d'origine, quelque chose comme ça
get_post_meta( $tag->term_id, '_yoast_wpseo_focuskw', true);
ne fonctionnera pas pour les catégories et les pages (il ne retournera rien.)Alors pourquoi ça?
En effet, pour les catégories et les balises, le mot clé focus est enregistré ailleurs dans la base de données. Au lieu d'être enregistré à l'intérieur de la
wp_postmeta
table comme d'habitude, il est enfoui profondément à l'intérieur de lawp_options
table, en tant qu'objet JSON.Les méthodes ci-dessus nous permettent d'accéder à ces valeurs.
Enfin, si vous êtes comme moi et que vous ne vous souvenez pas du nom des taxonomies (par exemple: il n'est pas évident pourquoi les balises utilisent la taxonomie
post_tag
et pas seulementtag
, vérifiez simplement les URL lorsque vous modifiez une catégorie ou une balise: elle affichera…taxonomy=category…
ou similaires.la source
Réponse Obtenir le mot clé de focus pour les catégories et les balises
// ça marche merci
// avec reste api
obtenir / wp-json / wp / v2 / categories? slug =
slug_name
plugin.in utilise la méthode 1
changer de ligne
$meta['post_tag'][$tag->term_id]['wpseo_focuskw'];
$meta['category'][$param_post_id]['wpseo_focuskw'];
la source