如何在while循环中执行if语句,反之亦然

时间:2014-08-01 23:22:43

标签: php wordpress events if-statement while-loop

我正在使用Wordpress的The Events Calendar Pro插件,我需要一些帮助。我认为这很简单,但我无法弄清楚。

基本上,我可以为每个事件添加一个额外的字段。我想检查该字段是否已设置以及是否已设置,那么我希望该特定事件显示在主页上。

我试图以某种方式将我在其他网站的主页模板上执行的代码与插件小部件文件混合在一起。

以下是我正在尝试使用的代码:

<?php
$query_str = "SELECT distinct wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id  AND wpostmeta.meta_key = '_EventStartDate' 
AND wposts.post_type = 'tribe_events' ORDER BY wpostmeta.meta_value ASC ";
$posts = $wpdb->get_results( $query_str );
foreach($posts as $post){
    setup_postdata($post);
    $id=get_the_ID();
    $linkr=get_post_meta($id,'_ecp_custom_3',true);

    date_default_timezone_set('America/Los_Angeles');
    $todayDate = date("Y-m-d H:i:s");
    $eventDate=get_post_meta($id,'_EventEndDate', "Y-m-d H:i:s");

    if ((strtolower($linkr)=='yes') && ($eventDate >= $todayDate)) {
        $link=get_permalink($id);
        echo "<li><a href='{$link}' title=''>";
        the_post_thumbnail();
        echo "</a></li>";
    }
}?>

这是我在widget文件中使用的代码。这是我想要检查是否设置了附加字段,如果是,然后添加到主页,但我不明白如何使用while循环调整它。

<div class="tribe-venue-widget-wrapper">
<ul>
<?php while ( $events->have_posts() ): ?>
    <?php $events->the_post(); ?>
    <li>
        <a href="<?php tribe_get_event_link() ?>"><?php the_post_thumbnail('medium'); ?></a>
    </li>
<?php endwhile; ?>
<div style="clear:both"></div>
</ul>

以下是我提出的并且无法正常工作的内容:

<div class="tribe-venue-widget-wrapper">
<ul>
<?php while ( $events->have_posts() ): ?>
    <?php $events->the_post();
        foreach($events as $event){
            setup_postdata($event);
            $id=get_the_ID();
            $showOnHomepage=get_post_meta($id,'_ecp_custom_4',true);
            $eventDate=get_post_meta($id,'_EventEndDate', "Y-m-d H:i:s");

            if (($showOnHomepage == 'Yes') && ($eventDate >= $todayDate)) {
                $link=get_permalink($id);
                echo "<li><a href='{$link}' title=''>";
                the_post_thumbnail('medium');
                echo "</a></li>";
            }
        }
    ?>
<?php endwhile; ?>
<div style="clear:both"></div>
</ul>

1 个答案:

答案 0 :(得分:0)

不太确定你需要什么,但最好的猜测如下。

<?php
$events = new wp_query(//is this present in your code?--if not $events has no posts. 
);
?>

<div class="tribe-venue-widget-wrapper">
<ul>

<?php while ( $events->have_posts() ):
    $events->the_post();



        $showOnHomepage=get_post_meta($post->ID,'_ecp_custom_4',true);
        $eventDate=get_post_meta($post->ID,'_EventEndDate', true); //boolan here you can change formats after if you want -- true= single result false = multiple if exist

        if (($showOnHomepage == 'Yes') && ($eventDate >= $todayDate)) {
            $link=get_permalink();
            echo "<li><a href='{$link}' title=''>";
            the_post_thumbnail('medium');
            echo "</a></li>";
        }
    }
   endwhile; 
   ?>