这是一个bug(我以前遇到过),可以在trac (因为我从来没有花时间提交过!)
问题开始于设置多个is_*
查询标志为true(特别是表示对象的标志,如单篇文章、页面和文章类型及术语存档)。
这是因为只有一个“被查询的对象”(在您的情况下是术语)。
现在是原因wp_title()
似乎是因为它调用了另一个函数:
function post_type_archive_title( $prefix = \'\', $display = true ) {
if ( ! is_post_type_archive() )
return;
$post_type_obj = get_queried_object();
$title = apply_filters(\'post_type_archive_title\', $post_type_obj->labels->name );
if ( $display )
echo $prefix . $title;
else
return $title;
}
自
is_post_type_archive
标志为true时,它假定查询的对象是post类型,并尝试访问实际上是term对象的未定义属性。
我不确定修复是要打开多个查询对象的可能性,还是要对它们进行更严格的检查,但我会在trac&;上找到它;我们将看到下面的内容。
Update: 要抑制该错误(其他可能的错误)(&;S),请“关闭”其中一个标志:
add_action( \'parse_query\', \'wpse_71157_parse_query\' );
function wpse_71157_parse_query( $wp_query )
{
if ( $wp_query->is_post_type_archive && $wp_query->is_tax )
$wp_query->is_post_type_archive = false;
}