在特定条件下覆盖wp_enQueue_脚本

时间:2016-05-05 作者:Aziz

我有一个名为custom_js 加载文件的js/custom.js. 我希望在某个条件为真时更改文件,但它似乎不起作用。这是我的代码:

add_action(\'wp_print_scripts\', \'my_custom_js\', 11);

function my_custom_js()
{
   wp_enqueue_script( \'custom_js\', get_template_directory_uri().\'/js/custom.js\' );

   if ( some condition )
   {
       wp_enqueue_script( \'custom_js\', get_template_directory_uri().\'/js/custom-2.js\');
   }
}
让另一个脚本排队对我来说似乎没有必要;操作已排队的脚本的最佳方法是什么?而且,我也不太清楚——我必须register 自定义排队脚本?

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

第一个wp_enqueue_script() 在您的代码中应该是wp_register_script(). 当register函数准备执行作业时,enqueue函数执行作业。

最好是创建一个新的js文件来保持组织有序。至于给他们打电话,你可以做以下事情

wp_register_script( \'abc\', \'path_to\' );
wp_register_script( \'xyz\', \'path_to\' );

if ( \'condition_a\' ) {
    wp_enqueue_script( \'abc\' );
} else {
    wp_enqueue_script( \'xyz\' );
}
是否使用_register_ 函数,如果需要,可以使用它。当有条件地将脚本排入队列时,如上文所述,如果条件调用脚本,您可以使用register函数来准备加载脚本,BUT, 没有必要

编辑也可以使用wp_localize_script() 要根据特定条件将PHP变量传递给js脚本,然后在js脚本中,可以根据PHP条件的值更改脚本

SO网友:TheDeadMedic

只需根据条件更改脚本URL:

function my_custom_js() {
    $file = some_condition() ? \'custom\' : \'custom-2\';

    wp_enqueue_script(
        \'custom_js\',
        get_template_directory_uri() . "/js/$file.js"
        /* array( \'jquery\' ) */ /* dependencies, if any */
    );
}

add_action( \'wp_enqueue_scripts\', \'my_custom_js\' );
你不应该使用wp_print_scripts - 如果需要一个接一个地打印脚本,请使用dependencies参数指定所需的脚本。

相关推荐