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

为WordPress自定义文章类型Projects添加作者城市元数据列

解决WordPress自定义文章类型Projects添加作者城市列无数据的问题

我刚踩过这个坑——之前给自定义文章类型Projects加了个显示作者城市的列,标题能正常出来,但列里就是没数据,明明这个城市数据在网站其他地方都能正常展示。折腾了一会儿终于搞定了,分享下具体步骤:

解决方案步骤

1. 注册新列的标题

用manage_{post_type}_posts_columns钩子来添加列标题,这里的{post_type}要替换成你的自定义文章类型slug(也就是projects):

add_filter('manage_projects_posts_columns', 'add_author_city_column');
function add_author_city_column($columns) {
    // 可以选择把新列插到指定位置,比如默认"作者"列的后面
    $new_columns = [];
    foreach ($columns as $key => $title) {
        $new_columns[$key] = $title;
        if ($key === 'author') {
            $new_columns['author_city'] = __('作者城市', 'your-theme-domain');
        }
    }
    return $new_columns;
    
    // 如果不需要指定位置,直接追加也可以:
    // $columns['author_city'] = __('作者城市', 'your-theme-domain');
    // return $columns;
}

2. 渲染列内的城市数据

这一步是核心!之前我就是没处理好这个钩子导致数据不显示。用manage_{post_type}_posts_custom_column钩子来填充具体数据:

add_action('manage_projects_posts_custom_column', 'render_author_city_column', 10, 2);
function render_author_city_column($column, $post_id) {
    // 只处理我们新增的author_city列
    if ($column !== 'author_city') {
        return;
    }
    
    // 获取当前文章的作者ID
    $author_id = get_post_field('post_author', $post_id);
    // 替换成你实际存储作者城市的用户元字段键名,比如我用的是'user_city'
    $author_city = get_user_meta($author_id, 'user_city', true);
    
    // 输出数据,记得用esc_html转义防止XSS风险
    echo !empty($author_city) ? esc_html($author_city) : __('暂无城市信息', 'your-theme-domain');
}

关键注意事项

  • 把your-theme-domain替换成你主题或插件的文本域,方便后续做国际化翻译
  • 确认user_city是你实际存储作者城市的元字段键名,必须和网站其他地方调用该数据时用的键名完全一致
  • 确保自定义文章类型的slug确实是projects,如果不是,把钩子中的projects替换成对应的slug即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:36:40