在unctions.php中使用is_page()根本不起作用

时间:2017-08-29 作者:pjldesign

尝试使用函数中的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
}
没有结果。任何帮助或见解都将不胜感激。

5 个回复
最合适的回答,由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;pji-main-vendor
  • theme_enqueue 也是一个非常通用的函数名,您也应该在它前面加前缀,您可以使用wp_enqueue_script. 如果您将所有内容传递给该函数,则无需调用wp_register_script
  • 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 它本身

    SO网友:HU ist Sebastian

    您注册脚本,但不将其排队。添加wp\\u enqueue\\u脚本(\'gh-jobs-board\');到您的条件函数。

    结束

    相关推荐

    如果我们想要在插件中转换字符串,我们不能使用定义为PHP常量的字符串吗?

    我想翻译插件中的常量字符串,定义为:define( \'CONSTANT\', __( \'string-A\', \'textdomain\' ) );然后在某个地方使用它,例如:$x= \'<h4>\'.CONSTANT_NAME.\'<h4>\'; echo $x;<但即使在添加了该区域设置后,我仍然会收到英文文本。生产任务单文件(&M);文本域。这只发生在PHP常量定义的字符串上,其余所有字符串都正常工作。那么,使用PHP常量定义的字符串是否不适用于翻译,因为即使在流