如何检查所有帖子的meta box值是否为假,然后根据该值做一些操作

时间:2015-09-23 作者:aroundsix

我在模板主页中有以下代码,用于查询称为评论的自定义帖子类型。我有一个自定义帖子类型的元框,在这里我可以写作者、文章链接、要显示在主页上的摘录和一个复选框。如果选中该复选框,则会在主页上拖动帖子。

 <?php 
        if(have_posts()) {
            while(have_posts()) {
                the_post();

                // store the page content for future use
                $home_content = get_the_content();

                if(has_post_thumbnail()) { ?>
                    <div class="rounded-image">
                        <?php the_post_thumbnail(); ?>
                    </div>  
                <?php }
            }
        } 
        // RESET ORIGINAL QUERY POST DATA
        wp_reset_postdata(); 
    ?>
<?php
// START THE SECOND QUERY TO RETRIEVE THE REVIEWS

    $args = array(\'post_type\' => \'reviews\');
    $home_reviews_query = new WP_Query($args);

    if($home_reviews_query->have_posts()) {
        while($home_reviews_query->have_posts()) {
            $home_reviews_query->the_post();

            // Retrieve Meta Box Options
            $checked_review = get_post_meta($post->ID, \'review_check\', true);
            $review_author = esc_html(get_post_meta($post->ID, \'review_author\', true));
            $review_excerpt = esc_html(get_post_meta($post->ID, \'review_excerpt\', true));
            $review_content = get_the_content();

            if($checked_review && $review_content != \'\') { ?>
                <blockquote>
                    <?php if($review_excerpt != \'\') : ?>
                        <p>
                            <?php
                                echo $review_excerpt;
                            ?>  
                        </p>
                    <?php elseif($review_excerpt == \'\') : ?>
                        <p>
                            <?php 
                                the_excerpt();
                            ?>
                        </p>
                    <?php endif; ?>
                    <cite>- <?php echo $review_author; ?> -</cite>
                </blockquote>
            <?php }                     
        }// end while           
    } // end if

    // RESET SECOND QUERY POSTDATA
    wp_reset_postdata(); 
?>
我希望如果没有检查任何帖子,我可以显示其他内容而不是评论,比如主页的\\u content(),作为备份,以防有人忘记检查任何评论。我想我可以检查所有帖子的$checked\\u review是否为false,如果返回true,则会显示其他一些内容。然而,我不知道如何正确地做到这一点。

我在循环中和循环后尝试了下面的代码,但没有结果。

if($checked_review == false) {
   echo $home_content;
}
我以前将主页the\\u content()存储在$Home\\u content变量中。在我开始查询评论帖子类型之前。

也尝试了get\\u posts(),但没有解决方案。希望我的帖子不会太混乱。

我对PHP不是很在行,所以如果有任何建议/推动正确的方向,我将不胜感激。

1 个回复
最合适的回答,由SO网友:Dave McCourt 整理而成

目前尚不清楚您是如何获得$home\\u内容的,但您需要两个循环:一个用于获取主页内容,另一个用于获取上面的评论内容。在两个循环之后,都需要使用wp\\u reset\\u postdata()。

相关推荐

echo a tax term in loop

对于列表中的每个项目,我需要在之后在此循环中回显CPT的一个术语。感谢您的指导或帮助。原始代码来自Stackoverflow。com,因为它起作用了。 <?php $da_place = get_field(\'smart_place\'); //acf field $args = array( \'post_type\' => \'to_do_items\', \'tax_query\' => array