Je suis un superviseur de contenu sur un site wordpress, il utilise wordpress seo by yoast plugin. Mon devoir consiste à analyser le contenu et à le marquer si cela semble approprié. Lorsque je marque un post particulier comme collant, il existe une fonction qui lui permet de n'apparaître que sur la page de catégorie. La prochaine chose que je dois faire est de définir manuellement la vue unique à non-index comme indiqué par le propriétaire du site.
Étant donné que le site est énorme, ce processus devient vraiment fastidieux et je cherche donc un moyen de l’automatiser en partie. J'essaie de mettre en place une fonction qui définit le message sur no-index dès que le message est mis à jour.
Premièrement, j'aimerais savoir quelle fonction wp est déclenchée lorsqu'un message est défini sur collant. Deuxièmement, étant donné que le site utilise le plug-in seo de yoast , j'aimerais connaître le filtre/filtre du seo-plugin qui définit la publication sur no-index. En recherchant des filtres ou des points d'ancrage pertinents, j'ai trouvé la page de seo-plugin API de yoast qui contient quelques filtres, mais je n'ai rien trouvé qui puisse être utile à mes fins.
Dans mes efforts pour résoudre ce problème, j'ai découvert un excellente ressource pour les hooks wordpress et le bon hook wpseo_saved_postdata
here . N'hésitez pas à modifier le code si vous pensez que cela pourrait être mieux. Pour l'instant, ça marche pour moi.
function set_noidex_when_sticky($post_id){
if ( wp_is_post_revision( $post_id ) ) return;
//perform other checks
//if(is_sticky($post_id)){ -----> this may work only AFTER the post is set to sticky
if (isset($_POST['sticky']) == 'sticky') { //this will work if the post IS BEING SET ticky
add_action( 'wpseo_saved_postdata', function() use ( $post_id ) {
update_post_meta( $post_id, '_yoast_wpseo_meta-robots-noindex', '1' );
}, 999 );
}
}
add_action( 'save_post', 'set_noidex_when_sticky' );
Seul _yoast_wpseo_meta-robots-noindex
était la méta que je voulais changer. Vous trouverez ci-dessous quelques-unes des clés méta de yoast, si vous souhaitez apporter des modifications à l'aide du code.
_yoast_wpseo_google-plus-description
_yoast_wpseo_linkdex
_yoast_wpseo_opengraph-description
_yoast_wpseo_redirect
_yoast_wpseo_canonical
_yoast_wpseo_sitemap-html-include
_yoast_wpseo_sitemap-prio
_yoast_wpseo_sitemap-include
_yoast_wpseo_meta-robots-adv
_yoast_wpseo_meta-robots-nofollow
_yoast_wpseo_meta-robots-noindex
_yoast_wpseo_metadesc
_yoast_wpseo_title
Pourquoi ne pas simplement vérifier si le message est collant, puis ajouter noindex? Vous pouvez utiliser la balise conditionnelleis_sticky()
.
Donc, dans votre balise <head>
dans votre fichier header.php
, procédez comme suit:
if ( is_sticky() && is_single() ) {
// it's a post and it's sticky, let's add noindex
echo '<meta name="robots" content="noindex">';
}