所以我一直试图让插件脚本/ css只在需要时加载。我有一个名为“评论”的帖子的类别,在我的functions.php下面我试图只在带有“审查”的帖子上加载插件,而不管是什么页面/帖子/主屏幕......没有加载。任何可能的帮助?
add_action( 'init', 'stopmyrpjs', 100 );
function stopmyrpjs() {
if (!in_category('review')){
remove_action('wp_head', 'myrp_load_necessary_js');
remove_action('wp_head', 'myrp_track_traffic');
wp_deregister_script( 'myrp-stuff' );
wp_dequeue_script( 'jtip' );
wp_dequeue_script( 'jquery-MetaData' );
wp_dequeue_script( 'jquery-ui' );
wp_dequeue_script( 'myrp-stuff' );
wp_dequeue_script( 'jquery-ui-accordion' );
wp_dequeue_script( 'jscolor' );
wp_dequeue_script( 'sorttable' );
wp_dequeue_script( 'jquery-MetaData' );
wp_dequeue_script( 'jquery-rating' );
}}
编辑::我有它的工作,除了它不适用于is_category或in_category ..我的工作是在下面:
add_action( 'wp_print_scripts', 'stopmyrpjs', 100 );
function stopmyrpjs() {
if (!is_single()){
remove_action('wp_head', 'myrp_load_necessary_js');
remove_action('wp_head', 'myrp_track_traffic');
wp_deregister_script( 'myrp-stuff' );
wp_dequeue_script( 'jtip' );
wp_dequeue_script( 'jquery-MetaData' );
wp_dequeue_script( 'jquery-ui' );
wp_dequeue_script( 'myrp-stuff' );
wp_dequeue_script( 'jquery-ui-accordion' );
wp_dequeue_script( 'jscolor' );
wp_dequeue_script( 'sorttable' );
wp_dequeue_script( 'jquery-MetaData' );
wp_dequeue_script( 'jquery-rating' );
}}
仍然希望我能为某些类别做这项工作..
答案 0 :(得分:1)
我想你想要is_category
这可以在循环外部使用,并根据当前视图返回一个布尔值。
<强>更新强>
仔细观察你的动作钩子,“它不起作用”的原因是因为动作的优先级。您正试图在'init'操作中取消注册和出列脚本,这可能是在脚本本身实际注册和/或入队之前触发的。
我也猜测外部脚本是由各种插件注册的,每个插件都有自己的动作挂钩和优先级。
尝试将其更改为“wp_footer”,而不是使用init钩子,以确保在删除任何多余的脚本之前,所有脚本都由相应的插件加载:
if (!is_category('review'))
{
remove_action('wp_head', 'myrp_load_necessary_js');
remove_action('wp_head', 'myrp_track_traffic');
add_action('wp_footer', 'stopmyrpjs');
}
function stopmyrpjs(){
wp_deregister_script( 'myrp-stuff' );
wp_dequeue_script( 'jtip' );
wp_dequeue_script( 'jquery-MetaData' );
wp_dequeue_script( 'jquery-ui' );
wp_dequeue_script( 'myrp-stuff' );
wp_dequeue_script( 'jquery-ui-accordion' );
wp_dequeue_script( 'jscolor' );
wp_dequeue_script( 'sorttable' );
wp_dequeue_script( 'jquery-MetaData' );
wp_dequeue_script( 'jquery-rating' );
}
另外,请记住,wp_dequeue_script是一个相对较新的函数(自3.1版本起)。如果由于某种原因您仍然遇到问题,请尝试将wp_dequeue_script更改为wp_deregister_script。
进一步检查将确保函数本身正在触发,并且相应的视图会使您的条件值评估为真。
希望这会有所帮助,祝你好运。
答案 1 :(得分:0)
Script Logic 是一个WordPress插件,可让您完全控制所有JavaScript和CSS文件。您可以通过使用WP的conditional tags来有条件地在需要的页面上加载CSS和JS文件。