J'essaie de redéclarer une fonction dans un thème enfant wordpress déjà utilisé par le thème parent. Cependant, le message "Erreur fatale: impossible de redéclarer" apparaît lorsque je tente de le faire.
En outre, j'ai essayé d'utiliser les éléments suivants sans succès:
if (!function_exists('jr_load_scripts')) {
// do fancy things here...
}
Voici le lien si vous voulez jeter un coup d'œil ...
EDIT: Voici le code complet:
if (!function_exists('jr_load_scripts')) {
function jr_load_scripts() {
global $app_abbr;
$http = (is_ssl()) ? 'https' : 'http';
// load google cdn hosted scripts if enabled
if (get_option($app_abbr.'_google_jquery') == 'yes') :
wp_deregister_script('jquery');
wp_register_script('jquery', (''.$http.'://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'), false, '1.4.2');
wp_register_script('jquery-ui-custom', ''.$http.'://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js', false, '1.8');
else :
wp_register_script('jquery-ui-custom', get_bloginfo('template_directory').'/includes/js/jquery-ui-1.8.custom.min.js', false, '1.8');
endif;
wp_enqueue_script('jquery');
wp_enqueue_script('jquery-ui-custom');
wp_enqueue_script('jquery-tag', get_bloginfo('template_directory').'/includes/js/jquery.tag.js', array('jquery'), '');
wp_enqueue_script('smoothscroll', get_bloginfo('template_directory').'/includes/js/smoothscroll.js', array('jquery'), '');
wp_enqueue_script('lazyload', get_bloginfo('template_directory').'/includes/js/jquery.lazyload.mini.js', array('jquery'), '1.5.0');
wp_enqueue_script('elastic', get_bloginfo('template_directory').'/includes/js/jquery.elastic.js', array('jquery'), '1.0');
wp_enqueue_script('fancybox', get_bloginfo('template_directory').'/includes/js/jquery.fancybox-1.3.4.pack.js', array('jquery'), '1.3.4');
wp_enqueue_script('qtip', get_bloginfo('template_directory').'/includes/js/jquery.qtip.min.js', array('jquery'), '1.0.0-rc3');
wp_enqueue_script('general', get_bloginfo('template_directory').'/includes/js/theme-scripts.js', array('jquery'), '3.0');
$jr_enable_indeed_feeds = get_option('jr_enable_indeed_feeds');
if ($jr_enable_indeed_feeds=='yes') :
wp_enqueue_script('indeed-api', ''.$http.'://www.indeed.com/ads/apiresults.js');
endif;
}
C'est un peu contre-intuitif, mais WordPress charge le code de thème de l'enfant avant celui de parent. Donc, envelopper quoi que ce soit dans function_exists()
dans le thème enfant ne fait rien, c'est le thème parent qui en a besoin.
La meilleure option est de décrocher la fonction thème du parent (à moins qu’elle ne soit exécutée au chargement, ce qu’elle ne devrait pas faire) et d’accrocher la vôtre.