Is_page()函数不起作用

时间:2019-05-24 作者:Kamran Asgari

我正在尝试将这些自定义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() 似乎根本不起作用。。我试着用IDSLUG, 但没有成功

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\' );
    } 
}

2 个回复
最合适的回答,由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 感谢他有益的评论

SO网友:middlelady

尝试更改参数page_titlepage-slugid. https://developer.wordpress.org/reference/functions/is_page/#parametersenqueue_style() 在将其排入队列之前立即运行Update: 我在这里的范围是鼓励围绕不同的参数进行尝试is_page() 使用相同的函数enqueue_style() 钩住wp_enqueue_scripts 这是唯一建议的脚本注册/排队方式。

相关推荐