我正在制作一个将用于开发项目的Wordpress主题的起点。在这个主题中,我将自动化每个项目上使用的常见插件安装。我已经能够使用update_options()
作用
我现在想做的是以同样的方式更新插件选项,但我没有取得任何成功。
例如,我使用Search Everything作为一个典型的插件。我有自己的搜索关键字highlighter,所以我想确保搜索词突出显示的插件设置始终处于关闭状态(以免干扰)。以下是我正在使用的代码:
add_action(\'admin_init\', \'nebula_plugin_force_settings\');
function nebula_plugin_force_settings(){
if ( file_exists(WP_PLUGIN_DIR . \'/search-everything\') ) {
//Tried the option slug in the array():
update_option(\'se_use_highlight\'], false);
//Tried hard-coding the array and key:
update_option(\'se_options["se_use_highlight"]\', false);
//Tried setting the array as a variable:
$se_options = get_option(\'se_options\');
update_option($se_options[\'se_use_highlight\'], false);
}
}
这些尝试都没有成功。我感觉自己越来越近了,因为当我
var_dump()
阵列,或回显
get_option()
我可以看到设置,但我无法更新该设置。有什么想法吗?
最合适的回答,由SO网友:totels 整理而成
作为参考,您可能需要阅读update_option
文档您传递的参数完全无关。然而,您的第三种技术是最接近的,您必须更新update_option
打电话,而不仅仅是你想要的一个选项。这是因为插件是如何将其选项存储为数组而不是单个选项的。
update_option
接受两个参数,第一个是要更新的选项的名称(在本例中se_options
) 作为一个字符串,第二个是选项值,这几乎可以是任何内容,它将在存储时由WP转换为字符串(序列化)。Search Everything插件发送一个数组,其中包含所有选项设置,您也需要这样做。
function nebula_plugin_force_settings() {
$se_options = get_option( \'se_options\' );
$se_options[\'se_use_highlight\'] = false;
update_option( \'se_options\', $se_options );
}