如果循环中的所有帖子都匹配条件,如何返回单个结果

时间:2011-12-06 01:35:50

标签: php wordpress if-statement

这是一些基本的IF THEN声明,但我是一个编码新手,所以我希望有人可以给我一个骨头: - )。

我有几个帖子都有自定义日期字段。我想:

1)遍历所有帖子并评估每个帖子的日期字段是否过去。如果是这样,我想显示特殊消息

2)如果过去只有一个帖子,我想继续评估,直到查询中的所有帖子结束。

3)如果发现即将发布一个具有未来日期的帖子,我还会从该帖子中显示更多内容,而不是特殊消息

目前,特殊消息仅在循环中的项目根本没有发布内容时显示。我还能够在评估每个帖子之后让它返回消息但是我为每个评估的帖子得到了一条特殊消息,我只想在任何一个帖子中得到一条消息帖子返回true。

我目前的代码是:

                        <?php

                        $parent = get_cat_name($category[0]->category_parent);
                        $cur_cat = $cur_cat_slug; 
                        $cur_date = current_time('timestamp',0);

                        echo $cur_cat_name;

                        ?>
                    </div>

                    <div class=dates>
                        <?php

                        $categoryvariable=$category; // assign the variable as current category
                        $query= 'cat=' . $cur_cat_id. '&posts_per_page=100&meta_key=date_value&orderby=meta_value&order=ASC&meta_compare=>=&meta_value=$cur_date'; // concatenate the query
                        query_posts($query); // run the query
                        if ( have_posts() ) : while ( have_posts() ) : the_post();
                        $date_value = get_post_meta($post->ID, 'date_value', true);
                        if ($date_value>=$cur_date)
                            {
                        ?> 
                            <a class=dates-link href="<?php the_permalink(); ?>">
                            <li><?php echo date("D, n/j/Y, g:ia", get_post_meta($post->ID, 'date_value', true)); ?> - <?php $key="course_endtime"; echo get_post_meta($post->ID, $key, true); ?>
                            </a>
                        <div class=info>
                            <table cellpadding=0 cellspacing=3 border=0>
                                <tr>
                                    <td valign=top><img src="<?php bloginfo('template_directory'); ?>/images/i.jpg"></td>
                                    <td>Click any date for more info about a course and to register online.</td>
                                </tr>
                            </table>
                        </div>
                        <?php
                            } 

                        endwhile; else:

                        ?>

                        <div class=course-content>Sorry, no courses are currently scheduled. See <a href="http://dynamictactical.org/courses/" style="color:#000000; text-decoration:underline;">Course Calendar</a> for all upcoming DTT courses.</div>
                        <? endif;
                        wp_reset_query();?>

2 个答案:

答案 0 :(得分:1)

这是我的小骨头: 使用布尔标志来确定是否需要显示特殊消息,并仅在循环后显示消息。 做这样的事情:

 Set $specialmessage = true;
在循环之前

。 然后,在循环内部,当您发现比您正在测试的日期更新的帖子时,将其设置为false并将the_content粘贴到持有者中。如果需要,可以使用break来退出循环。然后,

if($specialmessage)
     echo 'special message'
else
     echo the_content_placeholder.

不是编码专家,但我最好的建议。

答案 1 :(得分:0)

扔你的骨头:
保持php和输出-html分开。这样,您可以在输出任何内容之前进一步编辑结果,稍后更改内容会更容易。