[Résolu] 2 h1 sur une même page (Créer un compte)

  • WordPress :5.8
  • Statut : résolu
  • Ce sujet contient 10 réponses, 4 participants et a été mis à jour pour la dernière fois par Flobogo, le il y a 2 semaines.
11 sujets de 1 à 11 (sur un total de 11)
  • Auteur
    Messages
  • #2388364
    Xt0f
    Participant
    Padawan WordPress
    75 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL : 7 et quelques
    • Thème utilisé : eCommerce Star
    • Extensions en place : beaucoup, dont Rank Math SEO
    • Nom de l’hébergeur : peu importe je pense
    • Adresse du site : https://www.renov-lampes.com/

    Problème(s) rencontré(s) :

    Bonjour,

    J’ai fait une analyse de mon site avec le plugin Rank Math SEO et il m’indique quelques problèmes, dont 2 balises h1 sur la page d’accueil.

    Il me semble avoir lu que pourtant rien ne défendait vraiment “officiellement” d’avoir 2 titres h1 sur une même page, même si souvent c’est quand même déconseillé… enfin bref, ça me semblait pas si évident que cela qu’il ne fallait vraiment absolument jamais avoir 2 h1 sur une même page, mais bon, soit… je suis parti pour essayer de n’en avoir qu’un.

    Avec le thème eCommerce Star, sur l’ensemble des pages il y a un h1, et sur la page d’accueil, il y a en plus le nom du site qui est mis en h1 aussi. Donc il conviendrait de supprimer le h1 “classique”, qui sur mon site n’apporte rien et contient juste le mot “Accueil”. C’est ce que j’ai fait avec un coup de css en faisant “display: none;” mais le problème est toujours présent, vu que cette suppression “visuelle” ne supprime pas la ligne du code html.

    Quelqu’un saurait-il comment supprimer le titre “Accueil”  sur la page d’accueil? Non seulement visuellement, mais également dans le code?

    #2388376
    ferman
    Participant
    Maître WordPress
    4600 contributions

    Bonjour,

    Dans votre cas et avec ce thème, je ne vois que deux méthodes.

    1. Vous remplacez les balises h1 dans les fichiers du thème. (ecommerce-star/inc/template-tags lignes 673 et 675). Il faudra refaire la modification à chaque mise à jour du thème
    2. Vous utilisez js.
      var titre = document.querySelectorAll("h1.site-title")[0].outerHTML='';

      Dans le premier cas le code source est modifié. Dans le second, le HTML est modifié côté client mais pas le code source.  Pour le SEO, il y a eu débat: est-ce que les modifications du HTML avec js sont prises en compte par les robots. Il semble maintenant que oui mais vérifiez avec Rank Math SEO ce qu’il en pense. Et comme le sujet est encore un peu controversé, ce serait bien de poster le résultat sur le forum.

    Pour introduire le js, je suppose que vous savez comment faire. Personnellement je trouve l’extension “simple custom css and js”  pratique.

    #2388383
    Lumiere de Lune
    Participant
    Maître WordPress
    19723 contributions

    C’est normal. Le centrage en hauteur est plus difficile à faire en css. Le plus simple, c’est de te débrouiller pour que tes deux textes aient la même longueur

    #2388386
    ferman
    Participant
    Maître WordPress
    4600 contributions

    Bon, je crois que je n’avais pas compris le problème: j’ai enlevé le titre (donc le h1) sur la page d’accueil mais apparemment ce n’était pas ce qu’il fallait faire. De toute façon, je ne vois aucun autre h1, seulement le même avec un décalage quand on “scrolle” à moins qu’il ne s’agisse de ça h1 class=”entry-title featured-title” Accueil ? Mais je ne vois pas du tout où ça se trouve.

    Ah si ça y est: dans le code précédent, remplacez “.site-title” par  “.entry-title”.

    • Cette réponse a été modifiée le il y a 2 semaines et 3 jours par ferman.
    #2388404
    Xt0f
    Participant
    Padawan WordPress
    75 contributions

    Bonjour,

    Merci pour vos réponses.

    Oui c’est le h1 class=”entry-title featured-title” Accueil que je souhaite supprimer, que j’ai supprimé dans un premier temps en css mais cela ne le supprime pas du code html.

    J’ai tenté du coup votre solution avec l’ajout du code js

    var titre = document.querySelectorAll("h1.entry-title")[0].outerHTML='';

    mais malheureusement cela ne fonctionne pas :(.

    Du coup j’ai mis les mains dans le code (méthode 1). C’est en fait plutôt les lignes 15 à 18 du fichier /wp-content/themes/ecommerce-star/template-parts/page/content-page.php que j’ai mis en commentaire.

    Ca marche pas mal à priori mais comme vous dîtes, ça risque d’être écrasé à la première mise à jour du thème. J’utilise déjà un thème enfant (qui ne me sert pas à grand chose mais bon…) Est ce que ce thème enfant pourrait être utilisé d’une quelconque manière pour préserver les modifs?

    Par contre, l’objectif était de supprimer une erreur dans Rank Math SEO… et malheureusement cela ne semble pas le faire (capture d’écran ci-jointe).

    Je ne capte pas du tout pourquoi. Quand je regarde le code source html de la page, il n’y a désormais plus qu’un h1. Pourquoi Rank Math SEO m’indique-t-il toujours une trace du titre “Accueil”? J’ai purgé le cache dans la barre du haut de wordpress, mais cela n’a eu aucune incidence positive.

    Est-ce que vous voyez le problème de cette méthode 1 (méthode modification du template ecommerceStar), ou éventuellement une erreur dans le code de la méthode 2 (méthode js)?

    Merci!

    • Cette réponse a été modifiée le il y a 2 semaines et 2 jours par Xt0f.
    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
    #2388407
    Xt0f
    Participant
    Padawan WordPress
    75 contributions

    Oups, non… pardon! Il fallait cliquer sur “Recommencer l’analyse” 🙂

    Là j’ai une erreur en moins (capture d’écran jointe).

    Est-ce que vous voyez un moyen pour conserver les modifs après une mise à jour avec un thème enfant? ou avec une autre méthode?

    Est-ce que vous voyez une erreur dans le code js proposé précédemment? (solution qui peut être pas mal aussi si pas de réponse positives au 2 questions précédentes)

    Merci!!

    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
    #2388411
    Flobogo
    Modérateur
    Maître WordPress
    17765 contributions

    Bonjour,

    Je ne connais rien au JS, donc je ne peux pas vous parler de la “méthode 2”

    Par contre, pour la “méthode 1”, bien sûr, le thème-enfant peut servir à ça, c’est même un de ses objectifs 😉

    Dans un 1er temps, recopiez le fichier /wp-content/themes/ecommerce-star/template-parts/page/content-page.php dans le thème-enfant, en respectant la même hiérarchie de dossiers et sous-dossiers. Remettez en place le contenu “normal” de ce fichier dans le thème-parent.

    Si la modification n’est plus prise en compte (ce qui est probable), je vous donnerai une ligne de code à ajouter dans le functions.php du thème-enfant pour “appeler” le bon fichier content-page.php

     

    #2388427
    ferman
    Participant
    Maître WordPress
    4600 contributions

    Pour votre solution, vous pouvez utiliser votre code (commenter les lignes 15 à 18) et votre thème enfant mais il faut garder la même hiérarchie que dans le thème parent. Donc dans votre thème enfant, vous créez un dossier template-parts et vous y mettez le dossier page contenant lui même le fichier content-page modifié. Attention, cette méthode (comme pour votre code actuel) supprimera entry-title sur toutes les pages. Si ça ne vous pose pas de problème c’est la méthode à choisir.

    Pour le code js, je pense savoir d’où vient le problème mais pour que je puisse vérifier, pourriez-vous rendre le titre  “accueil” visible  (dé-commentez les lignes 15à 18 et laissez votre custom CSS commentée comme c’est le cas actuellement).

    #2388430
    ferman
    Participant
    Maître WordPress
    4600 contributions

    Bon, vous avez confirmation de @flobogo (je promets que je n’avais pas lu sa réponse avant d’écrire la mienne 🙂 ). Et j’ajoute  que la modification est bien prise en compte sans ligne dans functions.php (testé sur mon site).

    Pour le js inutile de vous embêter avec ça. Il ne sert plus à rien puisque la méthode 1 marche.

    • Cette réponse a été modifiée le il y a 2 semaines et 2 jours par ferman.
    #2388504
    Xt0f
    Participant
    Padawan WordPress
    75 contributions

    Bonjour,

    Je vous remercie pour vos réponses.

    Bon… C’est vrai que j’ai un peu merdé. En css j’avais bien ciblé uniquement le titre de la page d’accueil. Là, comme vous dites ferman, les titres de toutes les pages sauf la boutique et le blog ont été supprimés. Boulette!

    Du coup j’ai cherché une solution php et trouvé la fonction is_front_page() qui indique si on est sur la page d’accueil ou non. Sympa… Donc je l’ai utilisé avec une condition et ça semble faire le travail.

    	<?php if (!is_front_page()) {
    	?>
    		<header class="entry-header">
    			<?php the_title( '<h1 class="entry-title featured-title">', '</h1>' ); ?>
    			<?php ecommerce_star_edit_link( get_the_ID() ); ?>
    		</header><!-- .entry-header -->
    	<?php
    	} ?>

    Encore merci pour votre aide!

    #2388508
    Flobogo
    Modérateur
    Maître WordPress
    17765 contributions

    @Xt0f :

    Oui, j’allais vous suggérer ce type de code avec if (!is_front_page())  pour cibler (ou non) les pages autres que l’accueil.


    @ferman
    : merci d’avoir confirmé que lorsqu’on utilise le même nom de fichier, placé dans le thème-enfant avec la même hiérarchie de dossier/sous-dossier, ça fonctionne. En fait, si je me souviens bien (ça fait un moment que je n’y ai pas eu recours) c’est lorsqu’on créée juste une fonction (et pas un template complet) dans le thème-enfant qu’il faut appeler le fichier contenant cette fonction, avec un code genre require_once( get_stylesheet_directory(). '/dossier/fonction-enfant.php' );

11 sujets de 1 à 11 (sur un total de 11)
  • Vous devez être connecté pour répondre à ce sujet.