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

如何在WordPress循环内通过短码获取并输出带链接的文章作者显示名

如何在WordPress循环内通过短码获取并输出带链接的文章作者显示名

嘿,我看你在WordPress区块主题的搜索结果循环里,想用短码输出带链接的作者信息时遇到了问题,咱们来把这个问题搞定~

先说说你原来代码里的核心问题:

  • 第一个函数里,get_the_author()返回的是作者的显示名字符串,但get_the_author_meta()的第二个参数需要的是用户ID(数字类型),传字符串肯定会出问题,导致获取的作者信息不对或者为空。
  • 直接调用不带参数的get_the_author_meta()虽然在循环里理论上能生效,但用更明确的方式获取当前文章的作者ID会更可靠,避免依赖全局变量可能出现的意外。

这里给你调整后的短码函数,不仅能解决问题,还兼顾了安全性和兼容性:

function auteur_par(){
    // 获取当前循环中文章的作者ID,这是最可靠的方式
    $author_id = get_post_field('post_author');
    
    // 通过作者ID获取显示名
    $author_name = get_the_author_meta('display_name', $author_id);
    // 获取作者的归档页面链接(WordPress默认就有,比用户填写的个人主页更稳定)
    $author_url = get_author_posts_url($author_id);

    // 如果你一定要用用户自己填写的个人主页,可以用下面这段替换上面的$author_url
    // $author_url = get_the_author_meta('user_url', $author_id);
    // // 如果用户没填个人主页, fallback到作者归档页
    // if (empty($author_url)) {
    //     $author_url = get_author_posts_url($author_id);
    // }
    
    // 确保作者信息存在再输出,同时做安全转义避免漏洞
    if ($author_name && $author_url) {
        return '<p>Par <a href="' . esc_url($author_url) . '" target="_self" class="wp-block-post-author-name__link">' . esc_html($author_name) . '</a></p>';
    }
    
    // 没有作者信息时返回空,避免输出无效内容
    return '';
}
add_shortcode('auteur_par', 'auteur_par');

几点重要说明:

  • get_post_field('post_author')能精准获取当前循环内文章的作者ID,不管是搜索结果循环还是普通文章循环都适用。
  • 用get_author_posts_url()获取作者归档页链接是更稳妥的选择,因为很多用户可能不会填写个人主页地址,而归档页是WordPress自带的,用户点进去能看到该作者的所有文章。如果你坚持要用用户填写的个人主页,可以用代码里注释的部分。
  • 加上esc_url()和esc_html()是WordPress开发的安全规范,能防止恶意代码注入,一定要养成这个习惯哦。
  • 增加了判断逻辑,只有当作者名和链接都存在时才输出内容,避免出现空的链接或者奇怪的文本。

之后你在搜索结果模板的主循环里(也就是while( have_posts() ) : the_post();和endwhile;之间的区域)调用[auteur_par]短码,就能正确输出带链接的作者显示名啦~

备注:内容来源于stack exchange,提问作者user28551593

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 11:24:41