我正在尝试将这些自定义CSS和JS(编写在自定义插件中)添加到特定页面。
这是我的密码
<?php
function randomAlphaNumeric($length) {
$pool = array_merge(range(0,9), range(\'a\', \'z\'),range(\'A\', \'Z\'));
$key=\'\';
for($i=0; $i < $length; $i++) {
$key .= $pool[mt_rand(0, count($pool) - 1)];
}
return $key;
}
add_action(\'init\', \'register_script\');
function register_script(){
if(is_page(\'page_title\')) {
wp_register_script( \'custom_js\', plugins_url(\'/js/custom-js.js\', __FILE__).\'?random=\'.randomAlphaNumeric(5), array(\'jquery\'));
wp_register_style( \'new_style\', plugins_url(\'/css/new-style.css\', __FILE__).\'?random=\'.randomAlphaNumeric(5), false, \'all\');
}
}
// use the registered jquery and style above
add_action(\'wp_enqueue_scripts\', \'enqueue_style\');
function enqueue_style(){
if(is_page(\'page_title\')) {
wp_enqueue_script(\'custom_js\');
wp_enqueue_style( \'new_style\' );
}
}
但是
is_page()
似乎根本不起作用。。我试着用
ID 和
SLUG, 但没有成功
UPDATE替换了检查页面标题的条件,仍然不起作用
add_action(\'init\', \'register_script\');
function register_script(){
global $post;
if($post->post_title == \'page_title\') {
wp_register_script( \'custom_js\', plugins_url(\'/js/custom-js.js\', __FILE__).\'?random=\'.randomAlphaNumeric(5), array(\'jquery\'));
wp_register_style( \'new_style\', plugins_url(\'/css/new-style.css\', __FILE__).\'?random=\'.randomAlphaNumeric(5), false, \'all\');
}
}
// use the registered jquery and style above
add_action(\'wp_enqueue_scripts\', \'enqueue_style\');
function enqueue_style(){
global $post;
if($post->post_title == \'page_title\') {
wp_enqueue_script(\'custom_js\');
wp_enqueue_style( \'new_style\' );
}
}
最合适的回答,由SO网友:Sally CJ 整理而成
这个init
挂钩太早&mdash;WordPress尚未识别查询对象(帖子、类别等);因此is_page()
在那里不起作用:
add_action(\'init\', \'register_script\');
因此,对于条件标记/函数,如
is_page()
,
is_single()
, 等来工作(即返回正确的结果),您应该使用
wp
或更高版本的挂钩:
add_action(\'wp\', \'whatever_function\');
但对于注册/排队脚本和样式,应始终使用
wp_enqueue_scripts
钩因此,您可以使用此选项(而不是上述选项):
add_action(\'wp_enqueue_scripts\', \'register_script\');
PS:学分到@huraji 感谢他有益的评论