web-dev-qa-db-fra.com

Supprimer la balise meta robots de wp_head

J'ai besoin de supprimer uniquement cette ligne <meta name=robots content="noindex,follow"/> de wp_head, mais je ne trouve pas le bon crochet pour l'utiliser avec remove_action().

<meta name=robots content="noindex,follow"/>

Essentiellement, ce que je veux faire, c'est supprimer uniquement cette ligne de l'en-tête, mais uniquement pour la page de recherche. Donc, dans ce cas, j'utiliserais quelque chose de similaire à:

if ( is_search() ) { remove_action('wp_head', 'whatever-the-action-name-is'); }
3
elvismdev

Je l’ai compris, la sortie est contrôlée par le plugin WordPress SEO car il est activé sur le site, il me fallait donc un code très petit dans le fichier du plugin class-frontend.php

Évidemment, je n'aime pas trop cette solution de contournement sale, mais cela fonctionne en affichant maintenant cette méta dans la page de recherche comme je le souhaite.

Dans le fichier plug-in class-frontend.php, je devais remplacer la ligne 552 par ceci

if ( is_search() ) { $robots['follow'] = 'nofollow'; } else { $robots['follow'] = 'follow'; }
0
elvismdev
add_filter('wpseo_robots', 'yoast_no_home_noindex', 999);
function yoast_no_home_noindex($string= "") {
    if (is_home() || is_front_page()) {
        $string= "index,follow";
    }
    return $string;
}

cela devrait aller, je pense .. quelque part dans votre thème functions.php et devrait faire l'affaire.

5
Sovit Tamrakar

Sur la base de vos commentaires sur mon autre réponse, suggérant que vous souhaitiez explicitement laisser "décourager les moteurs de recherche d'indexer ce site", après une enquête plus approfondie sur le code source de WordPress (en particulier default-filters.php ), Je pense que c'est probablement ce que vous avez été après tout le temps:

add_action( 'posts_selection', 'indexSearchPage' );

function indexSearchPage() {
    // Be sure to include the priority for the action or it won't be removed
    if( is_search() )
        remove_action( 'wp_head', 'noindex', 1 );
}

J'utilise le hook d'action posts_selection car c'est le premier hook de la routine de chargement de WordPress qui a accès aux balises conditionnelles . Vous pouvez utiliser des actions ultérieures jusqu’au wp_head inclus, mais si vous utilisez wp_head lui-même, vous devez ajouter l’action avec une priorité inférieure à 1, car noindex est ajouté avec une priorité de 1:

add_action( 'wp_head', 'indexSearchPage', -1 );

Alternativement, il est possible de faire croire à WordPress que "dissuader les moteurs de recherche d'indexer ce site" est désactivé:

add_action( 'posts_selection', 'indexSearchPage' );

function indexSearchPage() {
    if( is_search() ) {
        $alloptions = wp_load_alloptions();
        $alloptions[ 'blog_public' ] = '1';
        wp_cache_set( 'alloptions', $alloptions, 'options' );
        wp_cache_set( 'blog_public', '1', 'options' );
    }
}
1
bosco

Je recommanderais simplement de décocher la case "Décourager les moteurs de recherche d'indexer ce site" de Settings > Reading sur le tableau de bord (cela devrait supprimer les balises méta pertinentes pour le robot de toutes les pages de votre site), puis d'ajouter manuellement la méta-étiquette En-tête du thème utilisant des conditions, comme ceci:

if( ! is_search() )
    echo( '<meta name="robots" content="noindex,nofollow" />' );

Vous devrez peut-être modifier les conditions pour obtenir l'effet souhaité, mais je pense que vous avez compris.

Si vous ne souhaitez pas modifier votre thème, vous pouvez l'attacher au crochet d'action wp_head:

add_action( 'wp_head', 'noRobots' );

function noRobots() {
    if( ! is_search() )
        echo( '<meta name="robots" content="noindex,nofollow" />' );
}
0
bosco