J'ai des problèmes avec mon équipe enfant et je me demandais si quelqu'un saurait ce que je peux faire en ce qui concerne mon problème.
J'ai créé un thème enfant à partir de ce thème: https://en-gb.wordpress.org/themes/colormag/
J'essayais d'injecter une nouvelle zone pour un widget que j'ai créé à l'aide de points d'ancrage, sur le même div où l'image d'en-tête est affichée. Après quelques tests, je ne pouvais pas faire ce que je voulais et j'ai donc décidé de copier les fichiers pertinents du thème parent dans mon thème enfant, de faire le changement et d'en finir.
Le problème que je rencontre est dans cette partie. J'ai copié 2 fichiers: header.php
et header-functions.php
, en laissant le fichier d'en-tête à la racine de mon thème et en créant un chemin similaire pour le fichier d'en-tête. Si vous voyez l'image à la fin de l'article, vous verrez que le site Web utilise le fichier d'en-tête sur mon enfant (remplace le fichier d'en-tête parent), mais qu'il utilise toujours le fichier d'en-tête-fonctions du thème parent. J'ai essayé différentes choses pour que le site Web utilise mon fichier d'en-tête-fonctions à la place du fichier parent, mais cela n'a pas fonctionné ou ma page a été cassée (page blanche).
Est-ce que quelqu'un sait comment puis-je résoudre ce problème et le faire fonctionner correctement (la structure du site Web WP est relativement nouvelle pour moi).
(Remarque:Si quelqu'un souhaite vérifier, la fonction que je souhaite modifier est la fonction function colormag_header_image_markup( $html, $header, $attr )
sur le header-functions.php
)
Merci d'avance, - Miguel
Essayez de remplacer les fonctions de thème parent au lieu de créer votre fichier header-functions.php
de thème enfant. Voici une référence sur la façon dont cela peut être fait: https://www.mhthemes.com/support/overriding-parent-theme-functions-child-theme-tutorial/
Vérifiez si le fichier header-functions.php
du thème parent implémente des fonctions enfichables. Ensuite, vous pouvez les remplacer dans votre fichier functions.php
.
Vous devez référencer le fichier de thème enfant afin de mettre quelque chose comme ceci dans votre functions.php
:
// A constant to define the paths to our folders.
define('CHILD_THEME_FILE', __FILE__);
define('CHILD_THEME', trailingslashit(get_template_directory(CHILD_THEME_FILE)));
define('CHILD_THEME_INC_PATH', CHILD_THEME_PATH . 'inc/');
//load the file
require_once( CHILD_THEME_INC_PATH . 'header-functions.php' );
header.php
c'est un fichier que vous n'avez pas besoin de référencer car c'est un fichier connu pour WordPress, les fichiers personnalisés comme header-functions.php
doivent être chargés explicitement, puisque le fichier function.php
de votre thème enfant se chargera en premier, vous pouvez télécharger votre version et celle du parent. ne chargera pas depuis son utilisation de require_once
.
Il est très facile de remplacer la fonction via le thème de votre enfant. Voir le code suivant:
add_filter( 'get_header_image_tag', 'colormag_header_image_markup', 10, 3 );
Le thème que vous utilisez remplace le filtre principal du thème, ce qui signifie que vous pouvez remplacer leur code en utilisant une priorité plus élevée (ils utilisent 10). Exemple:
function your_prefix_custom_header_image_markup() {
// YOUR CUSTOMIZATIONS HERE
}
add_filter( 'get_header_image_tag', 'your_prefix_custom_header_image_markup', 40, 3 );
J'ai utilisé la priorité 40 dans l'exemple pour remplacer le thème, mais vous pouvez utiliser n'importe quel paramètre supérieur à 10 et cela devrait fonctionner.
Si cela ne fonctionne pas, vous pouvez toujours supprimer leur action et ajouter la vôtre. Exemple:
// Your custom output
function your_prefix_custom_header_image_markup() {
// YOUR CUSTOMIZATIONS HERE
}
add_filter( 'get_header_image_tag', 'your_prefix_custom_header_image_markup', 40, 3 );
// Remove the theme action
remove_action( 'colormag_header_image_markup_render','colormag_header_image_markup_filter' );
// Add your own action
function your_prefix_custom_image_header_tag_markup() {
add_filter( 'get_header_image_tag', 'colormag_header_image_markup', 10, 3 );
}
add_action( 'colormag_header_image_markup_render', 'your_prefix_custom_image_header_tag_markup' );
Peut-être que l'une des réponses ci-dessus a fonctionné pour vous ... Sinon:
Vous ne voulez pas copier le fichier parent dans le thème de l'enfant. Créez plutôt un nouveau fichier vide portant le même nom dans votre thème enfant, puis remplissez-le avec les extraits dont vous avez besoin.
J'espère que cela pourra aider.
Oh, et vous devez également refléter le chemin dans votre dossier de thèmes enfants, donc inc/header-functions.php.