我正在寻找一种不会在单页上激活某个插件的解决方案。
我尝试使用附加的代码(在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;
}
我也曾尝试向我们提供插件管理器,但是不不能在单个页面上激活某个插件。
顺便说一句,如果有人得到的代码只能通过在帖子/页面上追踪其短代码来激活某些插件(例如联系表格7),那将是很棒的! 例如,如果x页面/帖子的简短代码包含“没有联系表格7”,则激活“没有联系表格7”插件,否则,请不要激活。
无论如何,在这个阶段,一个简单的解决方案就可以了:)
谢谢。
答案 0 :(得分:0)
“顺便说一句,如果有人得到的代码只能通过在帖子/页面上跟踪其短代码来激活某些插件(如联系表格7),那么效果会非常好!例如x页面/帖子的短代码中包含“联系表单7',然后激活联系表单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()调用。因此,插件甚至在从数据库中检索帖子内容之前就已经加载了。
您将代码放在哪里:
add_filter('option_active_plugins','lg_disable_cart66_plugin');
不能将其放入常规插件,因为它必须先执行先安装,然后才能加载插件。 (您不能告诉插件不要将其加载到已经加载的代码中。)由于也要加载 AFTER 插件,因此也不能将它们放置在functions.php中。您是否阅读了有关mu-plugins的评论?在常规插件之前先加载“必须使用”插件。所有这些都可以在wp-settings.php中找到-我强烈建议您阅读它-它很容易阅读,您将了解WordPress如何初始化自身。