Afficher le titre de Yoast WordPress SEO dans le modèle d'archive
4 réponses
- votes
-
- 2013-03-07
Obtenir destitres d'archive SEO
Si vous avez défini untitre d'archive detype demessagepersonnalisé,vouspouvez l'obteniren:
$titles = get_option( 'wpseo_titles' ); $title = $titles['title-ptarchive-POST_TYPE']; echo apply_filters( 'the_title', $title );
N'oubliezpas de remplacer
POST_TYPE
par votrepropretype demessagepersonnalisé.Pour affichertoutes les variables
wpseo_title
,vouspouvez utiliser:printf( '<pre>%s</pre>', print_r( get_option( 'wpseo_titles' ), 1 ) );
Vouspouvez doncfacilement choisir celui dont vous avezbesoin.
Obtenir lestitres Term SEO
Catégories
En utilisant ce code,vouspouvez obtenir letitre SEO que vous avez défini:
$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 );
Balises
En utilisant ce code,vouspouvez obtenir letitre SEO que vous avez défini:
$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 );
Pour affichertoutes les variables
wpseo_taxonomy_meta
,vouspouvez utiliser:printf( '<pre>%s</pre>', print_r( get_option( 'wpseo_taxonomy_meta' ), 1 ) );
De cettefaçon,vouspouvez voir la structureet les variables disponibles.
Get Archive SEO titles
If you defined a Custom Post Type archive title you can get that by:
$titles = get_option( 'wpseo_titles' ); $title = $titles['title-ptarchive-POST_TYPE']; echo apply_filters( 'the_title', $title );
Remember to replace
POST_TYPE
by your own Custom Post Type.To display all the
wpseo_title
variables, you can use:printf( '<pre>%s</pre>', print_r( get_option( 'wpseo_titles' ), 1 ) );
So you can easily pick the one you need.
Get Term SEO titles
Categories
By using this code you can get the SEO title you defined:
$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 );
Tags
By using this code you can get the SEO title you defined:
$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 );
To display all
wpseo_taxonomy_meta
variables, you can use:printf( '<pre>%s</pre>', print_r( get_option( 'wpseo_taxonomy_meta' ), 1 ) );
This way you can see the structure and available variables.
-
Vous avez ajouté letitre dans ** SEO **> **titreset métas **> ** Types depublication **?You added the title in **SEO** > **titles & metas** > **Post Types**?
- 0
- 2013-03-07
- Mike Madern
-
J'ai amélioréma réponse avec la solution :-)I improved my answer with the solution :-)
- 0
- 2013-03-07
- Mike Madern
-
Je suppose que vous avezmanquéma dernièremodification demessage :-P J'ai ajouté une version avec `$tag_id`.I'm guessing you missed my last post edit :-P I added a version with `$tag_id`.
- 0
- 2013-03-07
- Mike Madern
-
Mercibeaucouppour le code,je nepourraisjamais comprendre cela.J'ai apporté quelquesmodificationsmineurespour lefairefonctionner avec destaxonomiespersonnalisées.Thanks so much for the code, I´d never be able to figure this out. I made a few minor changes to get it to work with custom taxonomies.
- 1
- 2013-03-07
- Mattvic
-
C'estbien.J'ai dû utiliser `get_queried_object () ->term_id`,au lieu de`get_query_var () `cependant,comme lepremier retourne l'identifiant,le second retourne le slug,ce quifait que le code lance des avis" d'indexnon défini ".Veillez également à vérifier si quelque choseest défini sur `$meta ['post_tag| category']`,car vous obtiendrez également des avis d'indexnon définis.(WP 4.2.2,entre autres)This is great. I had to use `get_queried_object()->term_id`, instead of `get_query_var()` though, as the former returns the id, the latter returns the slug, making the code throw “undefined index” notices. Also, take care to check if there _is_ anything set at `$meta['post_tag|category']`, as you'll get undefined index notices as well. (WP 4.2.2, btw)
- 0
- 2015-05-20
- cabgfx
-
- 2013-03-07
Sur lapage d'archive dans laboucle depublication,ajoutez la ligne de code suivantepour que celafonctionne
echo get_post_meta(get_the_ID(), '_yoast_wpseo_title', true);
Dites-moi si celafonctionnepour vous ou sije vais vousfournir une autre solution.
On archive page in post loop add following line of code to make it work
echo get_post_meta(get_the_ID(), '_yoast_wpseo_title', true);
Tell me whether it is working for you or i will provide another solution.
-
Celan'amalheureusementpasfonctionné.Ilmontre letitre SEO dupremier article dans l'archive.Je vaisprobablement devoirplonger dans labase de donnéespour voir où ces données sont stockées.That didn´t work unfortunately. It shows the SEO title of the first post in the archive. I´ll probably have to dive into the DB to see where this data is stored.
- 0
- 2013-03-07
- Mattvic
-
L'utilisez-vousen boucle?Pouvez-vousme montrer le code?Are you using it in loop? Can you show me the code?
- 0
- 2013-03-07
- Vinod Dalvi
-
J'ai ajoutémon code.Jene saispas sij'aiexpliqué queje voulais sortir letitre de lapage,pas lestitres de chaque article de laboucle.I´ve added my code. Not sure if I explained that I wanted to output the page title, not the titles of each post in the loop.
- 0
- 2013-03-07
- Mattvic
-
Ceciestexactement ce queje cherchais.Affiche letitre SEO dans laboucle.Deplus,j'ai remplacéget_the_ID ()par $post-> IDThis is exactly what I was looking for. Outputs the SEO title in the loop. Also, I replaced get_the_ID() with $post->ID
- 0
- 2015-08-08
- gerbz
-
celame sauve la vie.bien..this saves my life. good..
- 0
- 2018-01-05
- Mukii kumar
-
Celafait écho à laméta descriptionpourmoipour une raison quelconque,comme sij'avais utilisé _yoast_wpseo_metadescThis echoes the meta description for me for some reason, as if i had used _yoast_wpseo_metadesc
- 0
- 2018-01-09
- Versa
-
@Versa C'estparce quej'ai utilisé l'écho dans le code.@Versa This is because i have used echo in the code.
- 0
- 2018-01-10
- Vinod Dalvi
-
- 2018-02-01
Obtention du mot-cléfocus pour les catégorieset lesbalises
Pour obtenir le mot-cléfocus d'une catégorie ou d'unebaliseparprogrammation,vouspouvez utiliser l'une de ces deuxméthodes:
/** 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']; } }
C'estessentiellement l'approche utiliséepar Mike à lafin de sonmessage.
ou
/** 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' ); } }
J'aitendance àpréférer la deuxième approcheparce que de cettefaçonje n'aipas à chercher ou àme soucier d'obtenir l'optionmétamoi-même.
Dans votre
functions.php
,vous voudrezpeut-êtretesterif class_exists( 'WPSEO_Taxonomy_Meta' )
puispeut-êtreenvelopper lafonction Yoast dans unefonction de votre choix,pour êtreen sécurité au cas où vous arrêteriez d'utiliser Yoast SEO surtoute la ligne.Quelquesinformationsgénérales
Commementionné dans la question originale,quelque chose comme
get_post_meta( $tag->term_id, '_yoast_wpseo_focuskw', true);
ne fonctionnerapaspour les catégorieset lespages (ilne retournera rien.)Alorspourquoi?
Eneffet,pour les catégorieset lesbalises,lemot-cléfocusestenregistré ailleurs dans labase de données. Au lieu d'êtreenregistré dans latable
wp_postmeta
comme d'habitude,ilestenfouiprofondément dans latablewp_options
,en tant qu'objet JSON.Lesméthodes ci-dessusnouspermettent d'accéder à ces valeurs.
Enfin,si vous êtes commemoiet que vousne vous souvenezpas dunom destaxonomies (parexemple:iln'estpas évident de savoirpourquoi lesbalises utilisent lataxonomie
post_tag
et pas seulementtag
,il suffit de vérifier les URL lorsque vousmodifiez une catégorie ou unebalise: cela affichera…taxonomy=category…
ou autre.Getting the focus keyword for categories and tags
To get the focus keyword of a Category or Tag programmatically, you can use either of these two methods:
/** 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']; } }
This is basically the approach used by Mike at the end of his post.
or
/** 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' ); } }
I tend to prefer the second approach because this way I don't have to fetch or care about getting the meta option myself.
In your
functions.php
, you may want to test forif class_exists( 'WPSEO_Taxonomy_Meta' )
and then maybe wrap the Yoast function into a functon of your own, to be safe in case you ever were to stop using Yoast SEO down the line.Some background
As mentioned in the original question, something like
get_post_meta( $tag->term_id, '_yoast_wpseo_focuskw', true);
won't work for categories and pages (it will return nothing.)So why is that?
That's because, for categories and tags, the focus keyword is saved elsewhere in the database. Instead of being saved inside of the
wp_postmeta
table as usual, it's buried deep inside of thewp_options
table, as a JSON object.The methods above let us access these values.
Finally, if you're like me and can't remember the name of taxonomies (e.g.: it's not obvious why tags use taxonomy
post_tag
and not justtag
, just check out the URLs when you edit a category or a tag: it'll show…taxonomy=category…
or the like. -
- 2018-07-15
Répondre Obtenir lemot-cléprincipalpour les catégorieset lesbalises
//çamarchemerci
//avec l'api de reposget/wp-json/wp/v2/categories? slug=
slug_name
plugin.in utilise laméthode 1
changer de ligne
$meta['post_tag'ewise[$tag->term_id['wpseo_focuskw'[/l ./code>
$meta['category'letter[$param_post_id unity['wpseo_focuskw' Often »;
Reply Getting the focus keyword for categories and tags
// it work thankyou
// with rest apiget /wp-json/wp/v2/categories?slug=
slug_name
plugin.in use Method 1
change line
$meta['post_tag'][$tag->term_id]['wpseo_focuskw'];
$meta['category'][$param_post_id]['wpseo_focuskw'];
Leplugin WordPress SEO de Yoastpermet aux utilisateurs d'ajouter destitres SEOet desméta descriptions auxpages d'archives determes detaxonomie. Ceux-ci sontensuite utilisés dans latête du document.
J'essaie d'afficher letitre SEO destermes detaxonomieen tant que H1 dansmonmodèle d'archive detaxonomie.
Pour cefaire dans unmessage,untype demessage ou unepageest simple:
Sur lesmodèles d'archive,celane fonctionnepas.
Quelqu'un sait-il commentfairefonctionner cela?
Exemple de capture d'écran
Il s'agit dutitre d'unterme debalise spécifique. J'essaye d'afficher cetitre -mais alorspour unterme detaxonomiepersonnalisé - dansmesmodèles d'archives.
Codefinal
C'est ce quej'aifini par utiliser dansmonmodèle
archive.php
. Celafonctionne si vous utilisez unetaxonomiepersonnalisée. Pour lestags ou les catégories,consultez la réponse de Mike Madern ci-dessous.