我想根据页面ID为每个WordPress页面运行不同的外部JavaScript文件。
如果页面ID为[1],请运行somescript.js如果页面ID为[15],请运行someotherscript.js如果页面ID为[195],则运行yetanotherscript.js
如果默认,则运行defaultscript.js
有人能告诉我这是如何在WordPress中用条件标签完成的吗?
致问候,
Dimitri Vorontzov
您不应该将脚本调用回显到头。如果你这样做的话,你会破坏插件,破坏依赖关系,并加载多个脚本副本。
在functions.php 中创建函数
add_action( 'init', 'dim_load_scripts' );
function dim_load_scripts() {
wp_register_script( 'my-first-script', get_bloginfo( 'stylesheet_directory' ). '/path/to/script.js', array( 'jquery' ), true);
//the jquery is only needed if it is a depencency
wp_register_script( 'my-second-script', get_bloginfo( 'stylesheet_directory' ). '/path/to/script.js', array( 'jquery' ), true);
wp_register_script( 'my-third-script', get_bloginfo( 'stylesheet_directory' ). '/path/to/script.js', array( 'jquery' ), true);
wp_register_script( 'my-fourth-script', get_bloginfo( 'stylesheet_directory' ). '/path/to/script.js', array( 'jquery' ), true);
if (is_page( 22 ) ) {
wp_enqueue_script( 'my-first-script' );
} elseif
(is_page ( 33 ) ) {
wp_enqueue_script( 'my-second-script' );
} elseif
(is_page ( 33 ) ) {
wp_enqueue_script( 'my-third-script' );
} else
if (is_page ( 33 ) ) {
wp_enqueue_script( 'my-fourth-script' );
}
}
注释中的代码存在语法错误。已更正:
function dim_load_scripts() {
wp_register_script( 'homescript.js', get_bloginfo( 'stylesheet_directory' ). '/supersized/js/homescript.js', array( 'jquery' ), true);
wp_register_script( 'defaultscript.js', get_bloginfo( 'stylesheet_directory' ). '/supersized/js/defaultscript.js', array( 'jquery' ), true);
if (is_home() ) {
wp_enqueue_script( 'homescript.js' );
} elseif(is_page ( 11 ) ) {
wp_enqueue_script( 'defaultscript.js' );
}
}
这也必须在functions.php中。我不会在wp-header.php 中工作
尝试了建议的解决方案后,我无法使它们发挥作用。我相信Chris的建议是非常可靠的,是我做错了什么,但到目前为止,我不得不求助于胶带解决方案:
我为要运行的脚本的每个版本创建了一个自定义页面模板,并为每个页面分配了一个单独的模板。不是最优雅的解决方案,但它有效。