不使用GET_OPTION()获取未序列化的数组

时间:2013-12-17 作者:KingRichard

我正在开发一个WPMU插件,它可以循环浏览网络上每个博客中的表。我无法使用get\\u选项将设置数组从wp_n_options 表,所以我试图通过查询$wpdb,然后使用unserialize().

我知道查询成功,因为我可以print_r result, 但它被包装在一个数组中,我不知道如何从中获取序列化字符串。

有什么指示吗?

---编辑---

它实际返回的是:stdClass Object ( [option_value] => ~serialized string~ )

1 个回复
最合适的回答,由SO网友:Maruti Mohanty 整理而成

可以使用以下两个内置函数来执行此操作。

  1. switch_to_blog
  2. get_option
您可以通过以下方式使用这两种方法来生成一个函数,这将为您提供选项。将下面的functions.php 文件

function wpse_get_options( $blog_id = 1 ){
    switch_to_blog( $blog_id );

    $get_option = get_option( $option ); // Replace $option with the option name
    restore_current_blog(); // Switch back to the original blog

    return $get_option;
}
现在,您可以使用上述函数获取选项,方法是使用该函数并传递博客id/子站点id。

$options = wpse_get_options( $blog_id );
// Replace the $blog_id with blog id of your sub sites.

结束

相关推荐

如何停止$wpdb前缀数据库名称

当我使用$wpdb运行更新查询时,WP会将与WP安装相关联的数据库名称前置到table name参数中传递的任何内容。这是不可取的,因为我的应用程序将完整路径传递到表(即databasename.table)。最后,所发生的是表名最终看起来像databasename。数据库名称。表,导致查询失败。有没有办法阻止这一切?我意识到我可以打开一个新的$wpdb连接来在不同的数据库上运行查询,但我想使用相同的连接。以这种方式选择“工作正常”,更新的行为不同,这很恼人。$wpdb->update(