WordPress : Le fichier header1.php du thème enfant n’écrase pas le fichier header1.php du thème parent

Publié par Jean-Michel le

J’essaie d’ajouter une navigation d’en-tête personnalisée à un site WordPress en utilisant un thème enfant (j’utilise le thème Alphabet). J’ai déterminé que j’utilisais le fichier header1.php en fonction du style à l’intérieur et de la sélection que j’avais faite dans la vue admin. J’ai copié le fichier header1.php du thème parent vers le thème enfant et ajouté un nouveau bloc div. Cependant, la nouvelle div ne s’affiche pas.

J’ai enregistré avec succès mon nouveau menu dans l’administrateur WP et j’ai créé des liens pour celui-ci, le CSS dans le fichier style.css du thème enfant est en cours de chargement lorsque je vérifie l’onglet source dans les outils de développement de Google Chrome et j’ai activé le thème enfant dans l’admin. Je me suis également assuré de répliquer les répertoires includes -> header_layout dans mon thème enfant.

Je ne suis pas sûr de ce qui me manque? Je ne veux pas ajouter la nouvelle navigation dans le thème parent car elle sera remplacée chaque fois que le thème sera mis à jour et c’est un inconvénient majeur. Existe-t-il un autre moyen de créer la navigation personnalisée peut-être ?

Edit : Au bas du fichier header.php, il y a ce bloc de code qui récupère le contenu d’en-tête approprié en fonction de ce que l’utilisateur sélectionne dans l’administrateur :

<div class="header">
      <div class="inner_header">
          <!-- Start Header Position -->
          <?php if(alphabet_get_option('header_position') == 'header1') { include ( get_template_directory() . '/includes/header_layout/header1.php'); } ?>
          <?php if(alphabet_get_option('header_position') == 'header2') { include ( get_template_directory() . '/includes/header_layout/header2.php'); } ?>
          <?php if(alphabet_get_option('header_position') == 'header3') { include ( get_template_directory() . '/includes/header_layout/header3.php'); } ?>
          <?php if(alphabet_get_option('header_position') == 'header4') { include ( get_template_directory() . '/includes/header_layout/header4.php'); } ?>
          <?php if(alphabet_get_option('header_position') == 'header5') { include ( get_template_directory() . '/includes/header_layout/header5.php'); } ?>
          <?php if(alphabet_get_option('header_position') == 'header6') { include ( get_template_directory() . '/includes/header_layout/header6.php'); } ?>
          <?php if(alphabet_get_option('header_position') == 'header7') { include ( get_template_directory() . '/includes/header_layout/header7.php'); } ?>
          <!-- End Header Position -->
      </div>
    </div>

Solution n°1 trouvée

Cette modification l’explique. L’alphabet est mal écrit. Son utilisation de l’include de php plutôt que des propres fonctions d’inclusion de WordPress comme get_headeret get_template_partrompt la hiérarchie parent/enfant. Vous pourriez probablement faire une copie du fichier header.phpet modifier ces inclusions, tant que le fichier appelant le header.phpfait correctement !

Tant que alphabet_get_optionrenvoie uniquement ces valeurs valides ou quelque chose falsy, cela devrait résoudre le problème :

<div class="header">
  <div class="inner_header">
      <!-- Start Header Position -->
      <?php
      $header_layout = alphabet_get_option('header_position');
        if( $header_layout ) {
            get_template_part( 'includes/header_layout/' . $header_layout );
        }
      ?>
      <!-- End Header Position -->
  </div>
</div>

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *