web-dev-qa-db-fra.com

enlève rel = next sur la page d'accueil mais pas les autres

Il existe un problème majeur avec la plupart des nouveaux modèles pour WordPress qui vous oblige à définir votre page d'accueil surYour Latest Posts.

Cela permettra à la plupart des fonctionnalités du thème de fonctionner.

Le problème, c’est que la page de couverture (même s’il ne s’agit pas d’une page de blog) est vue comme une entité paginée par le noyau wordpress et par yoast seo.

Qu'est-ce que cela signifie?

Vous avez une page d'accueil www.mysite.com si vous visitez votre page et regardez à l'intérieur du code source que vous voyezrel="next" href="hxxps://www.mysite.com/page/2/"

Si vous cliquez sur ce lien/page/2, vous verrez qu'il vous ramène directement à la page d'accueil, sauf que si vous regardez dans le code source, il contient maintenantrel="prev" href="hxxps://www.mysite.com/"etrel="next" href="hxxps://www.mysite.com/page/3/"

Si vous cliquez sur le lien vers/page/3/maintenant et vérifiez à nouveau le code source, vous verrezrel="prev" href="hxxps://www.mysite.com/page/2/"etrel="next" href="hxxps://www.mysite.com/page/4/"

Cela continue encore et encore, ce n'est pas quelque chose qu'un utilisateur final verra jamais, mais c'est très mauvais pour les moteurs de recherche, en particulier Google, qui y verra peut-être un contenu dupliqué.

Cela fait plusieurs semaines que je suis en pourparlers de soutien avec Yoast sur ce problème et ils sont catégoriques: c'est un problème de thème et blâme les développeurs de thème de ne pas utiliser correctement wp_enqueue. Pour l’essentiel, je pense que c’est le cas, mais cela signifie également qu’une grande majorité des thèmes WordPress les plus populaires ont le même problème.

Le seul moyen de contourner ce problème consiste à accéder aux paramètres de lecture dans wordpress et à définir votre page d'accueil en static page et votre page de publications en your posts page. Facile mais vous perdez toutes les fonctionnalités de Nice d'un modèle vraiment génial que vous venez de passer une semaine à personnaliser ou même à payer beaucoup.

Donc, bien que cela puisse être une solution, ce n'est pas vraiment une solution et il semble que la plupart des développeurs de thèmes ne savent pas comment résoudre ce problème.

J'ai eu ce problème avec mon thème précédent Tempera, je suis passé à quelques nouveaux thèmes de GraphPaperPress et puis j'ai aussi essayé l'un des thèmes les plus populaires Zerif et ils ont tous ce problème.

J'ai essayé toutes sortes d'extraits de code dans functions.php et je peux obtenir le rel = next et le rel = prev pour qu'ils ne s'affichent pas sur la page de couverture, mais cela ne fonctionne pas non plus sur toutes les autres pages comme le/blog/page où do vous voulez ces liens méta et également sur toutes les pages de catégorie qui ont également besoin des liens rel = next et rel = prev afin de dire aux moteurs de recherche de continuer à explorer plus en profondeur.

Je peux faire cela en passant à une page de couverture statique et obtenir une page de présentation d'aspect décent, semblable au thème dynamique de page de couverture, mais il y a tant de fonctionnalités perdues et il est plutôt déprimant de devoir se contenter de moins, en particulier avec tous les merveilleux choses de parallaxie qui sont disponibles aujourd'hui.

Donc, existe-t-il réellement une fonction simple pour le supprimer de la page d'accueil uniquement, mais pour l'afficher sur des pages telles que/blog// category1// category2 /

En voici quelques-unes que j'ai essayées, mais je ne comprends pas bien les déclarations conditionnelles ou je fais autre chose de mal, mais cela fait trop longtemps que je diagnostique cela et je pense que je suis en train de perdre la tête.

function wpseo_disable_rel_next_home( $link ) {
  if ( is_home() ) {
    return false;
  }
}
add_filter( 'wpseo_next_rel_link', 'wpseo_disable_rel_next_home' );

et

function genesis () {
if ( !is_home() || !function_exists( 'genesis' ) )
            $this->adjacent_rel_links();
}

et

if ( is_front_page() && is_home() )
{
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
remove_action(‘wp_head’, ‘cor_rel_next_prev_pagination’);
}

J'espère que quelqu'un pourra résoudre cette énigme. Quiconque souhaite tester ceci peut télécharger le thème Zerif et s’assurer que Yoast est également installé. Utilisez leur système de page d'accueil dynamique, puis créez une page de blog pour une page de liste de blogs distincte.

1
MitchellK

Voici la réponse:

function bg_disable_front_page_wpseo_next_rel_link( $link ) {
    if ( is_front_page() ) {
        return false;
    }

    return $link;
}
add_filter( 'wpseo_next_rel_link', 'bg_disable_front_page_wpseo_next_rel_link' );

Vous devez renvoyer le lien $, si vous ne renvoyez rien, il le désactivera pour chaque page ...

2
NiteRaven

Je vois que vous avez déjà essayé avec wpseo_next_rel_link pouvez essayer avec cela une fois de plus.

function wpseo_disable_rel_next_hom () {
  if ( is_home() || is_front_page() ) {
    return '';
  }
}
add_filter('wpseo_next_rel_link', 'wpseo_disable_rel_next_hom');

Et encore une chose selon ce que je sais, ce n’est pas le problème du plugin Yoast SEO. Vous pouvez essayer avec le thème par défaut de WordPress et vous verrez alors le différent.

0
Mohammad Limon