有没有人知道在特定页面上禁用插件(即活动)的真正有效方法?有一些插件在网站的某些页面中并不真正需要,并且它们有很多CSS和JavaScript文件,这些文件会降低网站的加载速度,有时可能会与其他文件发生冲突。
我知道我可以搞乱插件的代码等,但它并没有真正有效。
有什么想法吗?
提前致谢!
答案 0 :(得分:38)
尝试Jeff Sterup的“插件管理器”Wordpress插件。您必须在其设置下启用“选择性插件加载”(确保按照他们给出的指示启用它)
然后在你的帖子/页面编辑器中,在撰写窗口下方有一个框,其中包含用于禁用该页面的任何特定插件的复选框
带我大概20多个谷歌和Wordpress插件存储库搜索,最终找到一个简单的解决方案。希望它也适合你!
答案 1 :(得分:17)
add_filter( 'option_active_plugins', 'lg_disable_cart66_plugin' );
function lg_disable_cart66_plugin($plugins){
if(strpos($_SERVER['REQUEST_URI'], '/store/') === FALSE AND strpos($_SERVER['REQUEST_URI'], '/wp-admin/') === FALSE) {
$key = array_search( 'cart66/cart66.php' , $plugins );
if ( false !== $key ) unset( $plugins[$key] );
}
return $plugins;
}
答案 2 :(得分:7)
我知道它已经过时了,但这个话题正是我所需要的。
对numediaweb的回答唯一的警告是删除操作需要与添加操作相同的优先级
插件中的钩子
add_action('wp_print_styles', 'easy_fancybox_enqueue_styles', 999);
add_action('wp_enqueue_scripts', 'easy_fancybox_enqueue_scripts', 999);
add_action('wp_head', 'easy_fancybox', 999);
删除挂钩的代码
function remove_easy_fancybox() {
global $post;
$ids = array(12,34,55);
if(in_array($post->ID,$ids)):
remove_action('wp_print_styles', 'easy_fancybox_enqueue_styles', 999);
remove_action('wp_enqueue_scripts', 'easy_fancybox_enqueue_scripts',999);
remove_action('wp_head', 'easy_fancybox', 999);
wp_dequeue_script( 'jquery.fancybox' );
wp_dequeue_script( 'jquery.easing' );
wp_dequeue_script( 'jquery.mousewheel' );
wp_dequeue_script( 'jquery.metadata' );
endif;
}
add_action('wp_head', 'remove_easy_fancybox', 1);
来自http://codex.wordpress.org/Function_Reference/remove_action
重要事项:要删除挂钩,$ function_to_remove和$ priority参数必须在添加挂钩时匹配。这适用于两者 过滤器和操作。删除失败不会发出警告。
我已将if语句包含在仅对特定post id执行操作的情况下,认为它可能会有所帮助。
答案 3 :(得分:5)
首先检查,如果您要删除的插件没有选项菜单,您可以在其中设置要排除的页面。
其次,寻找你的插件动作挂钩ex:
add_action('wp_head', 'easy_fancybox', 999);
这是一个简单的fancybox插件的例子,它挂钩到wordpress标题。要删除它,我将此函数放在functions.php
中并且在调用wp_head();
的任何实例之前:
function remove_easy_fancybox() {
remove_action('wp_head', 'easy_fancybox_enqueue_styles');
remove_action('wp_head', 'easy_fancybox_enqueue_scripts');
remove_action('wp_head', 'easy_fancybox');
wp_dequeue_script( 'jquery.fancybox' );
wp_dequeue_script( 'jquery.easing' );
wp_dequeue_script( 'jquery.mousewheel' );
wp_dequeue_script( 'jquery.metadata' );
}
add_action('wp_head', 'remove_easy_fancybox', 1);
答案 4 :(得分:1)
您现在可以使用免费插件Freesoul停用插件来停用特定页面,帖子,自定义帖子和档案上的特定插件,设置页面确实非常简单