Wordpress禁用特定页面/帖子上的插件

时间:2011-07-21 10:08:33

标签: wordpress plugins

有没有人知道在特定页面上禁用插件(即活动)的真正有效方法?有一些插件在网站的某些页面中并不真正需要,并且它们有很多CSS和JavaScript文件,这些文件会降低网站的加载速度,有时可能会与其他文件发生冲突。

我知道我可以搞乱插件的代码等,但它并没有真正有效。

有什么想法吗?

提前致谢!

5 个答案:

答案 0 :(得分:38)

尝试Jeff Sterup的“插件管理器”Wordpress插件。您必须在其设置下启用“选择性插件加载”(确保按照他们给出的指示启用它)

然后在你的帖子/页面编辑器中,在撰写窗口下方有一个框,其中包含用于禁用该页面的任何特定插件的复选框

带我大概20多个谷歌和Wordpress插件存储库搜索,最终找到一个简单的解决方案。希望它也适合你!

答案 1 :(得分:17)

Here is the idea

 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停用插件来停用特定页面,帖子,自定义帖子和档案上的特定插件,设置页面确实非常简单