将数据添加到 wp_sitemeta table

Adding data to wp_sitemeta table

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

这取决于您要添加的内容。你可以使用 $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"
    )
  )
);


?>

WordPress 提供的函数 update_metadata($meta_type, $object_id, $meta_key, $meta_value, [$prev_value])(参见 codex)可以(并且可能应该)用于此目的。存在则更新key值,不存在则添加。

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

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

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