web-dev-qa-db-fra.com

WP Erreur fatale du personnaliseur lors de la tentative de chargement de la classe dans le thème enfant

J'ai développé de nombreux thèmes, cependant, je suis novice dans la construction de thèmes pour enfants et "surtout" en essayant d'implémenter des classes dans des thèmes pour enfants. Alors j'ai trouvé ...

Est-il possible de charger une classe WP Customizer dans un thème enfant? Dans mon cas, voici ce que je fais dans le thème de mon enfant:

functions.php

// Setup the Child Theme URL
define('child_template_directory', dirname( get_bloginfo('stylesheet_url')) );
// Get the files in the inc folder
$files_to_require = array( 'theme-customizer', );
foreach( $files_to_require as $file ) {
 locate_template ( "inc/{$file}.php", true, true );
}

inc/theme-customizer.php

if ( ! function_exists( 'my_customizer_frontend' ) && ! class_exists( 'My_Customizer_Frontend' ) ) {
 function my_customizer_frontend() {
 load_template( child_template_directory . '/inc/customizer/class-my-customize-frontend.php' );
 new My_Customizer_Frontend(); //This is line 34
 }
 add_action( 'init', 'my_customizer_frontend' );
}

inc/customizer/class-my-customizer-frontend.php

class My_Customizer_Frontend {
/* Do some stuff */
}

En utilisant l'exemple de code ci-dessus, je ne peux pas dépasser l'erreur suivante:

Erreur fatale: La classe 'My_Customizer_Frontend' est introuvable dans /var/www/html/mydomain.com/wp-content/themes/child-theme/inc/theme-customizer.php à la ligne 34.

J'essaie de surmonter ce problème depuis une journée complète et je ne fais que tourner mes roues maintenant.

J'ai parcouru tout le codex mais cela semble être hors de portée de quoi que ce soit écrit nulle part.

Tout avis serait grandement apprécié.

Meilleures salutations,

1
Dennis

Je pense que le message d'erreur est assez clair: la classe n'a pas été trouvée. La première chose à faire est de vérifier le chemin que vous utilisez pour charger le fichier dans lequel la classe est définie.

Si vous faites cela et vérifiez la valeur de child_template_directory constante, vous verrez qu'il n'y a pas de slash final, donc cette ligne:

load_template( child_template_directory . 'inc/customizer/class-my-customize-frontend.php' );

Devrait être:

load_template( child_template_directory . '/inc/customizer/class-my-customize-frontend.php' );

Quoi qu'il en soit, il existe un meilleur moyen d'obtenir le chemin d'accès au thème de l'enfant: get_stylesheet_directory() fonction .

Je ferais:

load_template( get_stylesheet_directory() . '/inc/customizer/class-my-customize-frontend.php' );

Ou, au moins, je définirais la constante de la manière suivante:

define('child_template_directory', get_stylesheet_directory() );

PD: Votre porlbem Ce n'est pas une erreur fatale de personnalisation WP.

2
cybmeta