将博客文章作者链接替换为团队成员链接 (CPT + ACF)

Posted

技术标签:

【中文标题】将博客文章作者链接替换为团队成员链接 (CPT + ACF)【英文标题】:Replace Blog Post Author link with Team Member link (CPT + ACF) 【发布时间】:2021-12-24 00:09:48 【问题描述】:

我正在构建一个包含“团队成员”部分和“博客”部分的网站。团队成员是自定义帖子类型。

客户要求博客文章中的作者链接应该指向相关的团队成员页面,而不是 WordPress 中的默认作者页面(基本上他们根本不希望有默认作者页面)。

我发现@Damocles - Use "Team Members" custom post type instead of Author for blog posts提供的这个解决方案

基本上他提出的解决方案很简单,完全符合我最初解决这个问题的想法:

    创建“帖子对象”ACF 字段并将其设置为通过“团队成员”自定义帖子类型进行过滤 将此字段附加到用户帐户 转到用户个人资料并从下拉菜单中选择正确的团队成员 然后在functions.php中使用过滤器自动将作者链接替换为相关的团队成员网址

有道理,但不幸的是,它不想在我的网站上运行。我什至和他一样为 ACF 字段使用了相同的名称,并在 functions.php 中使用了完全相同的代码:

add_filter( 'author_link', 'team_author_link', 10, 3 );
function team_author_link( $link, $author_id, $author_nicename ) 

  $team_post_id = get_field('team_post', $author_id);
  // if the team post is set, get the permalink to the team post:
  $team_link = get_permalink($team_post_id);
  $link = ($team_link !== false) ? $team_link : $link;
  return $link;

作者链接确实发生了变化,但不是指向相关的团队成员页面,而是所有作者链接都指向当前打开的博客文章 URL。不知道,可能是我的主题覆盖了查询什么的,所以无法从博文视图中获取到自定义帖子类型的 URL?

有人可以帮我实现它吗?我想在 WordPress 中将团队成员(自定义帖子类型)附加到用户帐户,并通过 functions.php 将作者链接替换为关联的团队成员页面 url。

【问题讨论】:

【参考方案1】:

这是因为你缺少一个前缀,告诉 ACF 它应该在寻找用户.. - 试试这个

$team_post_id = get_field('team_post', 'user_'.$author_id);

文档在这里:https://www.advancedcustomfields.com/resources/how-to-get-values-from-a-user/

【讨论】:

非常感谢,我不知道我是怎么错过的……现在工作得很好。 @Finnen 你能接受答案吗?它对我和 SOs 算法都有帮助,并让人们知道这个问题已经得到解答。

以上是关于将博客文章作者链接替换为团队成员链接 (CPT + ACF)的主要内容,如果未能解决你的问题,请参考以下文章

javascript 替换博客作者页面链接

团队作业

将类别添加到永久链接时,WordPress CPT 会导致 404

水沝--JAVA团队课程设计博客

JAVA团队课程设计博客--聊天室

# Do—Now——团队冲刺博客_总结篇