You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WP多站点中为wp_get_sites()添加自定义元数据

为WordPress多站点添加自定义元数据并在wp_get_sites()中返回

WordPress多站点有专门的表用来存储站点级自定义元信息,同时可以通过钩子将这些元数据注入到wp_get_sites()的返回结果中,具体实现如下:

一、站点自定义元数据的存储表

存在官方提供的wp_blogmeta表(表前缀会根据你的WordPress配置调整),这个表和文章元数据表wp_postmeta结构一致,包含meta_id、blog_id、meta_key、meta_value四个字段,专门用来存储单个站点的自定义信息,完全适合存放blog_currency: "USD"这类字段。

二、实现步骤

1. 添加自定义站点元数据

使用WordPress内置的add_blog_meta()函数添加元数据,示例:

// 给ID为1的站点添加货币字段
add_blog_meta( 1, 'blog_currency', 'USD' );

你可以在插件激活逻辑、后台设置保存时调用这个函数,也可以通过WordPress后台的代码片段工具执行,尽量避免直接操作数据库。

2. 让wp_get_sites()返回自定义元数据

通过site_details过滤器,把自定义元数据注入到每个站点的返回结果里,将以下代码添加到主题的functions.php或自定义插件中:

add_filter( 'site_details', 'inject_custom_blog_meta', 10, 2 );
function inject_custom_blog_meta( $site_data, $blog_id ) {
    // 获取已添加的货币元数据
    $blog_currency = get_blog_meta( $blog_id, 'blog_currency', true );
    if ( ! empty( $blog_currency ) ) {
        $site_data['blog_currency'] = $blog_currency;
    }
    // 要添加更多字段,直接重复上面的逻辑即可
    return $site_data;
}

之后调用wp_get_sites(),返回的每个站点对象就会包含blog_currency字段。

三、关于弃用的get_blog_list()

get_blog_list()已经被WordPress官方标记为弃用,建议优先使用wp_get_sites()。如果必须兼容旧代码,可以用blog_list过滤器处理:

add_filter( 'blog_list', 'inject_custom_meta_to_blog_list' );
function inject_custom_meta_to_blog_list( $blogs ) {
    foreach ( $blogs as &$blog ) {
        $blog_currency = get_blog_meta( $blog['blog_id'], 'blog_currency', true );
        if ( $blog_currency ) {
            $blog['blog_currency'] = $blog_currency;
        }
    }
    return $blogs;
}

内容的提问来源于stack exchange,提问作者Joseph Adegbola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:03:19