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

Gab*_*iel 24 wordpress plugins

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

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

有任何想法吗?

提前致谢!

Jes*_*e B 37

尝试Jeff Sterup的"插件管理器"Wordpress插件.你必须在它的设置下启用"选择性插件加载"(确保按照他们的指示启用它)

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

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

  • 这有效!对我来说效果很好的方法是全局禁用插件,然后专门启用需要它的页面/帖子.这减少了在不需要它的页面/帖子上不必要地加载该开销.谢谢Jesse B!/给予好评 (3认同)

小智 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;
 }
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,非常干净,只需要一小段代码。与这种简洁的解决方案相比,IMO安装像插件管理器之类的插件实在是太过分了。非常感谢! (2认同)
  • 再次请大家注意,这段代码应该放在`mu-plugins`中,而不是主题的`functions.php`中。 (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);
Run Code Online (Sandbox Code Playgroud)

删除钩子的代码

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);
Run Code Online (Sandbox Code Playgroud)

来自http://codex.wordpress.org/Function_Reference/remove_action

要点:要删除钩子,$ function_to_remove和$ priority参数必须在添加钩子时匹配.这适用于过滤器和操作.删除失败不会发出警告.

我已经包含了我的if语句,只对特定的帖子id执行操作,认为它可能会有所帮助.


num*_*web 5

首先检查,如果要删除的插件没有选项菜单,您可以在其中设置要排除的页面.

其次,为ex寻找你的插件动作钩子:

add_action('wp_head', 'easy_fancybox', 999);
Run Code Online (Sandbox Code Playgroud)

这是一个简单的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);
Run Code Online (Sandbox Code Playgroud)