我有一个名为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
自定义排队脚本?
最合适的回答,由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参数指定所需的脚本。