Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 使用「;团队成员“;自定义文章类型,而不是博客文章的作者_Wordpress - Fatal编程技术网

Wordpress 使用「;团队成员“;自定义文章类型,而不是博客文章的作者

Wordpress 使用「;团队成员“;自定义文章类型,而不是博客文章的作者,wordpress,Wordpress,出于SEO目的……客户希望作者链接指向团队成员的个人主页,而不是默认的作者主页……例如: 有一篇由用户a撰写的博客文章。作者链接现在指向: /author/usera 但他们希望它指向 /我们的团队/用户-a “我们的团队”是一个自定义帖子类型,用户a是其中的一个帖子 我已经尝试了一些变通解决方案,但还没有找到一种在作者和团队成员之间建立关系的好方法。如果我可以在选择作者时添加自定义帖子类型中的团队成员……这将解决我的问题,尽管我认为这相当复杂——但希望能让我了解我正在努力实现的目标 到目前为止

出于SEO目的……客户希望作者链接指向团队成员的个人主页,而不是默认的作者主页……例如:

有一篇由用户a撰写的博客文章。作者链接现在指向:

/author/usera

但他们希望它指向

/我们的团队/用户-a

“我们的团队”是一个自定义帖子类型,用户a是其中的一个帖子

我已经尝试了一些变通解决方案,但还没有找到一种在作者和团队成员之间建立关系的好方法。如果我可以在选择作者时添加自定义帖子类型中的团队成员……这将解决我的问题,尽管我认为这相当复杂——但希望能让我了解我正在努力实现的目标

到目前为止,我的解决方法是将author base重写为自定义post类型的slug,它处理了一半,但是author和团队成员之间仍然没有关系,因此我使用
作者元(user\u url)
在用户配置文件中获取“网站”字段,并在那里输入团队成员的url

这是可行的,但由于您必须将团队成员添加到我们的团队中,以及将他们添加为用户/作者,然后需要管理员的知识添加用户/作者以在网站字段中添加bio url,否则…这将无法正常工作,因此我希望有一个更干净的解决方案

让我知道这是否有意义,如果有更好的方法来做到这一点


谢谢

目前,我看不到用户帐户的自动映射→ 团队成员的职位发生了变化。因此,有多种方法可以通过手动将用户帐户映射到团队成员帖子来实现这一点

  • 将作者的网站设置为团队页面的URL
  • 高级自定义字段:创建为所有用户帐户显示的字段组,并包含一个帖子字段(仅限于团队帖子),以便您可以为每个WP用户手动选择一个团队帖子
  • 我将向您展示第一个选项

    假设每个用户帐户(用户)都有指向团队成员页面集的URL,例如,在
    usera
    的用户配置文件中,您可以看到: 网站:

    然后,您可以添加一个过滤器来修改作者链接,就像这样,将其添加到您的functions.php或自己的插件中:

    add_filter( 'author_link', 'team_author_link', 10, 3 );
    function team_author_link( $link, $author_id, $author_nicename ) {
    
      $userinfo = get_userdata($author_id);
      // if the user's Website field is not empty, replace the author link:
      $link = empty($userinfo->data->user_url) ? $link : $userinfo->data->user_url;
      return $link;
    }
    
    现在,您将有您的作者的所有链接链接到他们的“网站”,希望已设置为团队成员页面

    这也可以通过更漂亮的高级自定义字段来实现,您可以添加一个显示为用户角色->全部的字段组,该字段组有一个名为“team_Post”的“Post”类型字段,仅匹配团队自定义Post类型。它看起来与此类似: (您的职位类型很可能不会显示为“工作人员”,但很可能显示为“团队”)

    然后,您可以在每个作者的用户配置文件中选择一个团队帖子,并将筛选功能更改为:

    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。使用高级自定义字段,还可以创建一个仅管理选项页面,在该页面中可以将用户帐户映射到团队帖子,但这有点复杂