Wordpress is_single()总是在自定义WP_Query中返回true

时间:2018-01-07 11:53:18

标签: wordpress wordpress-theming

我在一个帖子页面上使用自定义WP_Query(它显示了最近的帖子列表):

$recent = new WP_Query($args);
while ($recent->have_posts()) {
    $recent->the_post();
    get_template_part('template-parts/content', get_post_format());
}

问题是:在模板中我检查is_single()条件,它总是返回true(没有传递参数)。当我尝试is_single($ post)时,有时会返回true,有时会返回false。

UPD 1:

我在主题文件夹中使用template-parts / content.php模板。代码是这样的:

    if ( is_single($post) ) :
        the_title( '<h1 class="entry-title pb-1 '.ta_content_paragraphs_paddings().'">', '</h1>' );
    else :
        the_title( '<h2 class="entry-title pb-1 '.ta_content_paragraphs_paddings().'"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h2>' );
    endif; ?>

UPD 2: 我发现为什么它有时会以$ post作为参数返回true,它发生在我的单个帖子标题与最近的帖子标题相同时。这部分代码在class-wp-query中,函数is_single:

} elseif ( in_array( $post_obj->post_title, $post ) ) { // returns here
            return true;

检查帖子标题是否告诉我单页是否正常?

1 个答案:

答案 0 :(得分:0)

我能够通过提供非$ post,但$ post&gt; ID来解决这个问题:is_single:

is_single($post->ID);

我不认为在wordpress核心中匹配$ post-&gt; post_title是一个好主意告诉它的单个帖子页面。也许我错了,误解了这一点。