简体   繁体   English

Wordpress 儿童主题

[英]Wordpress Child Themes

I'm trying to redeclare a function in a wordpress child theme that is already in use by the parent theme.我正在尝试在父主题已在使用的 wordpress 子主题中重新声明 function。 However, I get a "Fatal error: Cannot redeclare" message when trying to do so.但是,我在尝试这样做时收到“致命错误:无法重新声明”消息。

Also, I've tried using the following with no luck:另外,我尝试使用以下方法,但没有成功:

if (!function_exists('jr_load_scripts')) {
  // do fancy things here...
}

Here's the link if you want to have a quick look...如果您想快速浏览,请点击此处的链接...

EDIT: Here's the full code:编辑:这是完整的代码:

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');

wp_enqueue_script('jqtransform', get_bloginfo('template_directory') . '/includes/jqtransformplugin/jquery.jqtransform.js', array('jquery'),'');

endif;
}

EDIT2: As requested - the contents of the theme-enqueue file: EDIT2:根据要求 - 主题入队文件的内容:

<?php
/**
 * These are scripts used within the JobRoller theme
 * To increase speed and performance, we only want to
 * load them when needed
 *
 * @package JobRoller
 * @version 1.0
 *
 */

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;
}

// this function is called when submitting a new job listing
function jr_load_form_scripts() {
    // only load the tinymce editor when html is allowed
    if (get_option('jr_html_allowed') == 'yes') {
        wp_enqueue_script('tiny_mce', get_bloginfo('url').'/wp-includes/js/tinymce/tiny_mce.js');
        wp_enqueue_script('tiny_mce-wp-langs-en', get_bloginfo('url').'/wp-includes/js/tinymce/langs/wp-langs-en.js');
    }
}

// to speed things up, don't load these scripts in the WP back-end (which is the default)
if(!is_admin()) {
    add_action('wp_print_scripts', 'jr_load_scripts');
    // add_action('wp_print_styles', 'cp_load_styles');
}

You cannot override that function, as the parent theme's declaration is executed after your declaration, and it doesn't try to check if the function already exists.您不能覆盖 function,因为父主题的声明在您的声明之后执行,并且它不会尝试检查 function 是否已经存在。

The only way would be to wrap the parent theme's function declaration inside the if condition.唯一的方法是将父主题的 function 声明包装在 if 条件中。

if (!function_exists('jr_load_scripts')) {

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM