【问题标题】:Wordpress - Create link to separate author archive inside blog postWordpress - 在博客文章中创建单独的作者存档链接
【发布时间】:2017-09-12 19:19:00
【问题描述】:

我们正在 Wordpress 中开发一个博客,并且遇到了一些我们难以实现的功能。

我们的客户希望能够在博客文章中提及博客用户,这会将最终用户带到提到的作者个人资料。下面的例子:

"We recently spoke to our newest team member Pete Smith""We recently spoke to our newest team member @PeteSmith"

如果你点击皮特的名字,它会带你到website.com/authors/petesmith

我知道 Wordpress 在 cmets 部分内置了提及功能,但有没有办法在实际的博客文章中实现这一点?

抱歉,我不能在这个问题上包含任何代码,根本没有什么可以向你们展示的。

【问题讨论】:

  • 简单地在其地址从作者页面的 URL 复制的名称上创建一个链接怎么样?
  • 虽然这样可行,但并非客户办公室的所有用户都知道如何以这种方式进行操作

标签: php wordpress


【解决方案1】:

你可以在你的functions.php中使用这样的东西:

add_filter('the_content', 'the_content_func');

function the_content_func($content) {
    $ret = preg_replace_callback ( "/(@[A-Za-z]+)/",
        function ($match) {
            $authorName = mb_substr($match[0], 1);
            $author = get_user_by('slug', $authorName);
            if ( ! empty( $author ) )
                return '<a href="' . get_author_posts_url( $author->ID, $author->user_nicename ) . '">' . $author->display_name . '</a>';
            else
                return $authorName;
        },
    $content);
    return $ret;
}

我假设@符号后面的文本是作者的 slug,所以在过滤器中我搜索给定的作者,如果找到,输出相应的作者个人资料链接和显示名称。否则我只输出没有@符号和URL的字符串。

如果我误解了您的目标,请随时修改 preg_replace_callback 的内部函数,保持 $match[0] 包含从帖子内容中找到的带有 @ 符号的用户 slug。

【讨论】:

  • 谢谢你,我想我们可以解决这个问题。所以上面的代码只会抓取所有内容并将@替换为链接?午饭后我会试一试,然后告诉你我的进展情况:)
【解决方案2】:

这是作者存档页面的代码

<a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ), get_the_author_meta( 'user_nicename' ) ); ?>"><?php the_author(); ?></a>

【讨论】:

  • 这不是链接到作者的页面,而是从帖子正文中链接到 不同的作者个人资料
猜你喜欢
  • 2019-02-24
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 2013-09-01
相关资源
最近更新 更多