每个作者有一个页面,但如果作者没有任何帖子,我就无法获取其变量,因为循环是空的。页面返回空的,没有头像,没有信息和东西,整个网站是空的。
如果没有帖子,我如何让WordPress拉出author变量(为什么没有作者,但我在作者页面上)。。?
我用twentyeleven作为家长主题。
每个作者有一个页面,但如果作者没有任何帖子,我就无法获取其变量,因为循环是空的。页面返回空的,没有头像,没有信息和东西,整个网站是空的。
如果没有帖子,我如何让WordPress拉出author变量(为什么没有作者,但我在作者页面上)。。?
我用twentyeleven作为家长主题。
要访问author归档上循环之外的author用户对象,可以执行以下操作:
global $curauth;
$curauth = (isset($_GET[\'author_name\'])) ? get_user_by(\'slug\', $author_name) : get_userdata(intval($author));
echo \'This is the author page of \'.$curauth->display_name;
我搞定了!就我而言,我首先创建了一个作者。归档文件中的php页面(我的主题缺少一个)。通过克隆和清理php。然后我找到了这段代码:
<?php if ( have_posts() ) : ?>
它基本上说:如果作者发表了一些帖子,那么。。。好吧,我只是补充道:“否则!”<?php if ( have_posts() || !have_posts() ) : ?>
它工作得很好(see here)! “是否”是||
= 或“和”!
= 不是”。此外,我不得不改变模板检索作者头像的方式,因为get_avatar
如果作者/用户尚未发布任何内容,或者他/她的帖子仍然是“私有”而非“公共”,则无法正常工作。
我研究了法典,得出了以下解决方案。而不是:
echo get_avatar( get_the_author_meta( \'ID\' ), 80 );
我使用:get_avatar( $curauth->ID, 80 );
您必须设置$curauth
变量正确后的第一件事get_header
不过,功能。get_header();
$curauth = (get_query_var(\'author_name\'))
? get_user_by(\'slug\', get_query_var(\'author_name\'))
: get_userdata(get_query_var(\'author\'));
您可以使用以下功能将404重定向回作者模板:
function slug_show_authors_without_posts( $template ) {
global $wp_query;
if ( $wp_query->query_vars[ \'post_type\' ] === \'author\' ) {
return get_author_template();
}
return $template;
}
add_filter( \'404_template\', \'slug_show_authors_without_posts\' );
使用此解决方案时,需要记住两件重要的事情:1)这打破了模板层次结构的回退系统。所以如果你的主题没有作者。php,您将遇到一个新问题,因为它不会回退到索引。就像你习惯的那样。TL;博士,你必须有作者。主题中的php。
2) 这并没有解决大多数作者的问题。php模板测试作者是否有帖子,如果没有,则不返回帖子警告。您需要修改或删除作者中的循环。php来防止这种情况。
TL;DR您的作者。php的设计可能是为了避免这种情况。你需要解决这个问题。
get_query_var(\'author\')
将为您提供打开页面的用户ID(例如,用户IDfoo
对于URL/author/foo/
) 无论给定用户是否有帖子。
我在博客中既有常规的博客帖子,也有自定义的帖子类型。页面模板显示作者帖子链接。如果您单击该链接查找撰写过一些文章的作者,该页面(博客/作者/作者先生)将显示预期的个人信息和作者的文章列表。但是,如果您创建的用户是作者,但只编写了自定义帖子类型,没有常规帖子,则由\\u author\\u posts\\u link()生成的链接(仍然是正确的链接:blog/authors/mr author)显示一个未填充的页面(即:字段全部为空,帖子列表是所有作者的所有帖子的完整列表)。显然,我们在$authordat