如何从多站点设置中的所有站点获取选项值设置?

时间:2013-10-03 作者:David Labbe

我创建了一个插件,用于我的多站点设置中的每个站点。在这个插件中,我有一个管理设置页面,允许每个站点根据站点需要设置选项。每个站点使用add_option() 作用

如何从多站点上的所有站点查询所有自定义选项值?我需要收集这些值,然后将它们存储到一个数组中。一旦进入一个数组,我将使用它检查数组中的另一个值,以查看它是否存在于所有站点的选项值数组中。

如何查找自定义选项的所有值?

3 个回复
SO网友:Vinod Dalvi

您可以使用get_site_option() 函数获取单个网络范围选项。

示例:

$singleoption = get_site_option( \'siteurl\' );
如果要从所有站点获取所有选项,请使用wp\\u load\\u alloptions()函数。

示例:

$alloptions = wp_load_alloptions()

SO网友:David Labbe

这就是我想到的,它是有效的,但是如果有更有效的方法来获得相同的结果(比如内置的WP函数),那么请让我知道。谢谢

 global $wpdb;

        $blogs = $wpdb->get_results("SELECT blog_id FROM wp_blogs where blog_id > 1");

        foreach ($blogs as $blog) {

            $option_values = $wpdb->get_results("SELECT option_value FROM wp_" . $blog->blog_id . "_options WHERE option_name=\'mb-activation-options\' ");

            foreach ($option_values as $value) {
                var_dump($value->option_value);
            }
        }

SO网友:David Labbe

感谢您的响应,但是wp\\u load\\u alloptions()只返回加载到的单个站点的所有选项和值,而不是网络上所有站点的所有选项和值。

我需要的是下面这样的内容,我从wp\\u load\\u alloptions()核心复制并添加了where子句。但是,这只返回特定于其执行位置的站点选项,因为$wpdb前缀调用运行的站点。

$alloptions_db = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options WHERE option_name = \'NAME_OF_OPTION\'");

结束

相关推荐

意外删除了wp_options数据库表的active_plugins部分

好吧,所以我很确定我在这里完蛋了,因为我没有数据库备份,但我想我还是问问以防万一。在PhpMyAdmin中,我的意思是只需转到wp\\u options表并清空该表中的active\\u plugins部分,因为插件错误而无法登录。我点击了删除按钮,而不是清空它。是否有任何方法可以手动添加此表的active\\u插件部分?我尝试了修复数据库的方法,但没有成功。