TL,DR;
你很早就上钩了。
在插件中,默认情况下css文件加载整个站点,我只想在单个帖子上加载它。
这是一个非常好的想法,许多开发人员在开发主题/插件时没有考虑到这一点。
is_single()
在插件中不起作用
您在哪里使用is_single
中的模板标记WP run cycle ?
假设你正在init
或wp
模板标记在
template_redirect
行动所以这些标签不适用于
init
或
wp
.
使用脚本或样式的最佳位置是wp_enqueue_scripts
它在后面运行template_redirect
.
你知道我们怎样才能做到吗?
根据我们使用的插件,有很多方法可以实现。
即将加入TablePress 插件。
controllers/controller-frontend.php
插件在样式表中排队的位置。
if ( apply_filters( \'tablepress_use_default_css\', true ) || TablePress::$model_options->get( \'use_custom_css\' ) ) {
add_action( \'wp_enqueue_scripts\', array( $this, \'enqueue_css\' ) );
}
您可以使用
tablepress_use_default_css
自定义css选项为false,然后在自定义插件/主题中的任何需要的地方加载它们。
如果你仔细研究这个文件,就会有很多条件为该插件排队。
您还可以根据需要先按样式出列,然后再按顺序入队。
示例代码
add_action(\'wp_enqueue_scripts\',\'wp_228402_load_styles_conditionally\',11);
function wp_228402_load_styles_conditionally() {
if(is_single()){
return; // return if not on the single post/page
}
wp_dequeue_style(\'tablepress-default\');
}
检查
priority 对于以上内容,这是关键,它应该大于默认值
10.