将数据添加到wp_sitemeta表

时间:2017-01-16 18:32:15

标签: wordpress multisite

有没有办法在Wordpress Multisite中的wp_sitemeta表中添加一行?我在想wp_usermeta,有add_user_meta($ user_ID,$ meta_key,$ meta_value),add_user_meta($ user_ID,$ meta_key,$ meta_value)等功能,可能有办法做同样的事情。 wp_sitemeta? 我搜索过,但似乎无法找到有关在任何地方添加到此表的信息。可以吗?

2 个答案:

答案 0 :(得分:1)

这取决于您要添加的内容。您可以使用$ wpdb

<?php 

global $wpdb;
$main_blog_prefix = $wpdb->get_blog_prefix(BLOG_ID_CURRENT_SITE);

$meta_table  = $main_blog_prefix."sitemeta";

$insertedRow = $wpdb->insert( $wpdb->prepare(
    $meta_table , 
    array( 
        'site_id' => BLOG_ID_CURRENT_SITE, 
        'meta_key' => 'some_meta', 
        'meta_value' => "asd asd asda sda sda sd"
    )
  )
);


?>

答案 1 :(得分:1)

WordPress提供了功能update_metadata($meta_type, $object_id, $meta_key, $meta_value, [$prev_value])(请参阅codex),可以(可能应该)使用此功能。如果键值存在,它将更新键值;如果键值不存在,它将添加键值。

要更新wp_sitemeta,请设置$meta_type = 'site'$object_id应该是网络ID,几乎可以肯定是“ 1”。 (尽管WP DB具有对多个网络的架构支持,但WordPress仅通过其UI支持ID为“ 1”的单个网络。)$meta_key$meta_value参数用于元数据密钥和值。

还请注意,wp_sitemeta用于网络范围的选项,而不是特定于博客的(子站点)选项。

如果您能够在shell命令提示符下工作并有权访问WP-CLI命令行客户端,则也可以使用wp network meta update <id> <key> [<value>] [--format=<format>]命令。 (我尚未测试是否根据需要添加或更新,但是我希望这样做。)