如何防止插件在特定页面上运行?

问题描述 投票:0回答:1

我正在寻找一种不会在单页上激活某个插件的解决方案。

我试图尝试附加的代码(由Wordpress Disable Plugin on Specific Pages/Posts上的@Kamil Grzegorczyk提供),但没有成功。

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;
 }

我也曾尝试向我们提供插件管理器,但是NOT不能在单个页面上激活某个插件。

BTW,如果有人得到的代码只能通过在帖子/页面上追踪其短代码来激活某些插件(例如联系表格7),那将是非常棒的!例如,如果x页面/帖子的简短代码包含“联系表格7号”,则激活联系表格7号插件,否则,请不要激活。

无论如何,在这个阶段,一个简单的解决方案就可以了:)

谢谢。

php wordpress plugins shortcode contact-form-7
1个回答
0
投票

“ BTW,如果有人得到的代码只能通过在帖子/页面上追踪其短代码来激活某些插件(例如7号联系表格),那将非常出色!类似于x页面/帖子的短代码中包含“联系人” 7号表单,然后激活Contact 7号表单插件,否则,请不要激活。” -这是不可能的。阅读源代码wp-blog-header.php应该可以使您清楚。

$wp_did_header = true;

// Load the WordPress library.
require_once( dirname( __FILE__ ) . '/wp-load.php' );

// Set up the WordPress query.
wp();

// Load the theme template.
require_once( ABSPATH . WPINC . '/template-loader.php' );

插件由wp-settings.php加载,而wp-settings.php由wp-load.php加载。请求的帖子内容是通过WP :: query_posts()从数据库中检索的,该函数由函数wp()调用。因此,插件甚至在从数据库中检索帖子内容之前就已经加载了。

© www.soinside.com 2019 - 2024. All rights reserved.