有没有办法在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? 我搜索过,但似乎无法找到有关在任何地方添加到此表的信息。可以吗?
答案 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>]
命令。 (我尚未测试是否根据需要添加或更新,但是我希望这样做。)