在非单一帖子上将脚本排队时出现问题

时间:2014-11-06 作者:Manolo

我有此代码,可以在页面不在single.php (都不是管理页面):

//functions.php
/********************** Add JS file **************************/
function my_own_scripts() {
    if (! is_admin() && ! is_single()) {
        wp_register_script( \'my_javascript_file\',get_bloginfo(\'stylesheet_directory\') . \'/js/my_javascript_file.js\', array( \'jquery\' ) );
        wp_enqueue_script( \'my_javascript_file\' );
    }
}

add_action( \'wp_enqueue_scripts\', \'my_own_scripts\' );
但脚本总是排队。也是在一个单一的帖子条目中。

我读过this post, 但对我没有帮助。当然,主题是使用single.phpis_single() 与其他功能配合使用。

有什么想法吗?

Edit:我发现了is_single() 总是返回false, 即使在single.php 已加载。我不明白为什么这个函数不能像预期的那样工作,而它在所有其他函数中都正常工作functions.php.

2 个回复
SO网友:dMcClintock

通过一些小的修改,我能够以您想要的结果运行您的功能(站点范围内,除了在单个帖子/cpt页面和管理区域中)。

当前返回样式表uri的首选方法是get_stylesheet_directory_uri(), 使用get_bloginfo(\'stylesheet_directory\'):

来自WordPress CodexFunction Reference 页码:

\'stylesheet\\u directory\'-返回活动主题的样式表目录URL。(在早期的WordPress版本中是本地路径。)考虑改用get\\u stylesheet\\u directory\\u uri()。

你用的钩子,wp_enqueue_scripts, 默认情况下,仅加载前端中的项目,而不加载仪表板或登录屏幕中的项目(来源:WordPress Codex Plugin API Docs). 尝试以下修改后的函数版本,当我在本地测试它时,它可以正常工作:

function my_own_scripts() {
    if (! is_single()) {
            wp_register_script ( \'my_javascript_file\', get_stylesheet_directory_uri() . \'/js/my_javascript_file.js\', array( \'jquery\' ) );
            wp_enqueue_script ( \'my_javascript_file\' );
    }
}
add_action( \'wp_enqueue_scripts\', \'my_own_scripts\' );

SO网友:Robert hue

要排除这两个页面/部分,您必须检查每个部分是否也满足条件。对,不是你在检查这两个条件是否都满足AND 操作人员你需要什么OR.

像这样。

function my_own_scripts() {
    if ( !is_admin() || !is_single() ) {
        wp_register_script( \'my_javascript_file\', get_bloginfo(\'stylesheet_directory\') . \'/js/my_javascript_file.js\', array( \'jquery\' ) );
        wp_enqueue_script( \'my_javascript_file\' );
    }
}
add_action( \'wp_enqueue_scripts\', \'my_own_scripts\' );

结束

相关推荐

theme functions (hooks)

WordPress已经提出了这个问题,但没有答案。我只是想在这个论坛上试试,如果有人知道的话,因为我也有同样的问题。要使用jquery滑块编辑我的主题,如何转到该脚本?,显示“$主题->挂钩(\'content\\u before\');”在content div标记中。有人能帮忙吗?我的主题索引。php包含以下内容<div id=\"main\"> <?php $theme->hook(\'main_before\'); ?> &#x