我们正在使用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已经提到了评论部分内置的功能,但有没有办法在实际博客文章中实现这一点?
道歉,我不能在这个问题上包含任何代码,没有什么可以向你们展示。
答案 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>