Wordpress - 创建链接以在博客文章中分隔作者档案

时间:2017-09-12 10:03:34

标签: php wordpress

我们正在使用Wordpress开发一个博客,并且遇到了一些我们在实施方面遇到一些困难的功能。

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

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

如果您点击Pete的名字,则会转到website.com/authors/petesmith

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

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

2 个答案:

答案 0 :(得分: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,其中@符号来自帖子内容。

答案 1 :(得分:-1)

以下是作者存档页面的代码

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