web-dev-qa-db-fra.com

NoFollow Site entier

Par défaut, chaque fois que vous désactivez l'indexation via les paramètres administrateur

[x] Décourager les moteurs de recherche d'indexer ce site

Il ajoute une balise meta dans l'en-tête comme ceci:

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

Comment puis-je changer cela pour être nofollow au lieu de follow? Je trouve cela étrange de permettre le suivi et, globalement, de le vouloir noindex,nofollow.

Je pourrais faire un écho directement dans wp_head mais cela ne compte pas pour les pages telles que wp-login et les goûts.

6
Howdy_McGee

Pensant que c'était une excellente question, je suis allé creuser. Dans default-filters.php à la ligne 208, il y a add_action('wp_head', 'noindex', 1); à partir de WordPress 4.1. La fonction noindex () vérifie à son tour si vous avez défini l'option blog_public sur 0. Si c'est le cas, elle appelle wp_no_robots (), qui est simplement:

function wp_no_robots() {
    echo "<meta name='robots' content='noindex,follow' />\n";
}

Aucune des dernières méthodes ne peut être filtrée, mais un simple plugin fera l'affaire pour enlever le crochet:

/*
 * Declare plugin stuff here
 */

remove_action('wp_head','noindex',1);

Maintenant, vous êtes libre de créer votre propre action pour faire écho à ce que vous voulez.

add_action('wp_head', 'my_no_follow', 1);

function my_no_follow() {
    if ( '0' == get_option('blog_public') ) {
        echo "<meta name='robots' content='noindex,nofollow' />\n";
    }
}
4
Andrew Bartel

Je suppose que cela a fini par travailler pour moi. J'espérais davantage trouver un meilleur filtre mais cela fonctionne tout aussi bien. Jetez ceci dans un fichier functions.php et le tour est joué.

/** No Index No Follow Entire Website **/
function nofollow_meta() {
    echo "<meta name='robots' content='noindex,nofollow' />\n";
}
add_action( 'wp_head', 'nofollow_meta', 1 );
add_action( 'login_enqueue_scripts', 'nofollow_meta', 1 );
2
Howdy_McGee