尝试使用函数中的is\\u page在单个页面上运行自定义脚本。php根本不工作。我有一个名为load\\u gh\\u boards的函数,它只会在某个页面上生成脚本(79):
function load_gh_boards() {
if( is_page(79) ){
wp_register_script( \'gh-jobs-board\', get_bloginfo( \'template_directory\' ) . \'/js/gh-jobs-board.js\', array(), \'1.0\', true );
}}
add_action(\'wp_enqueue_script\', \'load_gh_boards\');
这是在加载所有样式和脚本的主题排队函数中:
function theme_enqueue() {
if ( ! is_admin() ) {
wp_register_style( \'main-style\', get_bloginfo( \'template_directory\' ) . \'/css/style.css?\' . time() );
wp_enqueue_style( \'main-style\' );
wp_enqueue_script( \'jquery\' );
wp_register_script( \'main-vendor\', get_bloginfo( \'template_directory\' ) . \'/js/vendor.js\', array(), \'1.0\', true );
///etc...
wp_enqueue_script( \'main-vendor\' );
wp_enqueue_script( \'main-script\' );
///load_gh_boards
}
没有结果。任何帮助或见解都将不胜感激。
最合适的回答,由SO网友:Tom J Nowell 整理而成
is_page(79)
询问当前主查询是否为页面,特别是第79页
But the main query hasn\'t happened yet
必须在主循环内或至少在模板内调用此函数,但
init
胡克现在说这个还为时过早。
相反,请确保使用body类,并在所有页面上加载脚本。然后,检查body标记是否具有css类page-id-79
.
其他注意事项init
胡克,你应该在wp_enqueue_scripts
提前回来会更简单,例如。if ( is_admin() ) return;
不要将jQuery排队,而是将其作为依赖项添加,以便WP知道如何以正确的顺序输出脚本。主样式和主供应商是非常通用的名称,您可能会遇到冲突,请在它们前面加上前缀,例如。pji-main-vendor
theme_enqueue
也是一个非常通用的函数名,您也应该在它前面加前缀,您可以使用wp_enqueue_script
. 如果您将所有内容传递给该函数,则无需调用wp_register_script
缩进您的代码,现代代码编辑器将自动做到这一点,无需任何努力。Sublime或Atom都是可以为您做到这一点的自由软件的例子,真的没有任何借口
SO网友:Steph
这对我来说绝对有效:
add_action(\'get_header\', function() {
if(is_page(\'566\')) {
function sp_enqueue_script() {
wp_enqueue_script(
\'sp-custom-script\',
get_stylesheet_directory_uri() . \'/assets/js/sp_script.js\',
array( \'jquery\' ), \'1.0\', true
);
}
add_action( \'wp_enqueue_scripts\', \'sp_enqueue_script\' );
}
});
is_page 在函数中不起作用。php,因为主查询尚未加载,所以请等待标头加载。
中的最后一个布尔值wp_enqueue_script
钩子用于脚本在页脚中排队,因此它运行得更快。
SO网友:pjldesign
function theme_enqueue() {
if ( ! is_admin() ) {
wp_register_script( \'main-script\', get_bloginfo( \'template_directory\' ) . \'/js/script.js\', array(), \'1.0\', true );
wp_register_script( \'gh-jobs-board\', get_bloginfo( \'template_directory\' ) . \'/js/gh-jobs-board.js\', array(), \'1.0\', true );
///etc...
wp_enqueue_script( \'main-vendor\' );
wp_enqueue_script( \'main-script\' );
///etc...
if( is_page(79) ) {
wp_enqueue_script( \'gh-jobs-board\' );
}
}
}
add_action( \'wp_enqueue_scripts\', \'theme_enqueue\' );
SO网友:Johansson
首先,您的代码中存在键入错误。它是wp_enqueue_scripts
, 不wp_enqueue_script
. 这可能就是问题所在。
此外,您不应该使用wp_enqueue_scripts
在另一个内部wp_enqueue_scripts
. 只需在theme_enqueue()
功能如下:
function theme_enqueue() {
if ( ! is_admin() ) {
wp_register_style( \'main-style\', get_bloginfo( \'template_directory\' ) . \'/css/style.css?\' . time() );
wp_enqueue_style( \'main-style\' );
wp_enqueue_script( \'jquery\' );
wp_register_script( \'main-vendor\', get_bloginfo( \'template_directory\' ) . \'/js/vendor.js\', array(), \'1.0\', true );
///etc...
wp_enqueue_script( \'main-vendor\' );
wp_enqueue_script( \'main-script\' );
if( is_page(79) ){
wp_register_script( \'gh-jobs-board\', get_bloginfo( \'template_directory\' ) . \'/js/gh-jobs-board.js\', array(), \'1.0\', true );
}
}
add_action(\'wp_enqueue_scripts\', \'theme_enqueue\');
我假设
theme_enqueue()
函数连接到
wp_enqueue_scripts
它本身