仅为自定义帖子类型加载JS脚本

时间:2018-08-01 作者:JoaMika

我正在使用这段代码,我不知道为什么没有加载脚本。我相信语法是正确的,因为我试图只在“events”自定义post类型的单post上加载脚本。

add_action( \'login_enqueue_scripts\', \'wpse_login_enqueue_scripts\', 10 );
function wpse_login_enqueue_scripts() {
    if( is_single() && get_post_type()==\'events\' ){
    wp_enqueue_script( \'bootstrap\', \'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js\', array(\'jquery\'), \'3.3.5\', true );
}
}

3 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

要在前端将脚本排队,挂钩应该是wp_enqueue_scripts, 不login_enqueue_scripts.

此外,查看您是否使用单一自定义帖子类型的更好方法是使用is_singular() 并传递要检查的帖子类型:

if ( is_singular( \'events\' ) ) {
}
get_post_type() 依靠全球$post 对象,而不是主查询。它们通常是相同的,但在某些情况下$post 对象可能与当前的单个帖子不同。

SO网友:Kaperto

此挂钩仅在登录页上触发:
https://developer.wordpress.org/reference/hooks/login_enqueue_scripts/

要在自定义贴子页面上使用,请使用操作wp_enqueue_scripts.

SO网友:Iceable

您正在将此函数挂接到\'login_enqueue_scripts\' (仅在登录页面上运行);你应该把它钩住\'wp_enqueue_scripts\' 相反

而且( is_single() && get_post_type()==\'events\' ) 会起作用,但正如雅各布·皮蒂在另一个回答中指出的,is_singular( \'events\' ) 是检查自定义post类型single post的最佳方法。

最后,应将函数重命名为wpse_login_enqueue_scripts() 大概是wpse_events_enqueue_scripts() 要使其更具描述性,更不容易混淆,请执行以下操作:

add_action( \'wp_enqueue_scripts\', \'wpse_events_enqueue_scripts\', 10 );
function wpse_events_enqueue_scripts() {
    if ( is_single() && \'events\' == get_post_type() ) {
        wp_enqueue_script( \'bootstrap\', \'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js\', array(\'jquery\'), \'3.3.5\', true );
    }
}

结束

相关推荐

对WooCommerce的Functions.php更改不起作用

我正在尝试将其添加到函数中。php。在我的另一个站点上的测试实验室中,它可以很好地添加测试信息。但在这个网站上,我试图把它添加到什么都没有发生的情况下。该网站正在使用最新的woocommerce运行一个建筑节俭主题。有什么想法吗?我基本上只是想在每个产品页面上添加一行类似于免责声明但无法添加的文本。add_action(\'woocommerce_before_add_to_cart_form\',\'print_something_below_short_description\');