使用If Else语句显示/过滤POST

时间:2020-07-09 作者:Yucaree

这里是:我想根据类别(Party)筛选我的帖子,如果带有类别Party的帖子有标记为“event”,则会显示该帖子如果没有“event”标记,则只会显示Party类别的最近帖子

这是我的代码:

<?php 
    $post_cat = array(
            \'posts_per_page\' => \'1\',
            \'cat\' => \'3\'
            );
    $post_tag = array(
            \'posts_per_page\' => \'1\',
            \'cat\' => \'3\',
            \'tag\' => \'event\'
            );  
    $catquery = new WP_Query( $post_cat );
    $tagquery = new WP_Query( $post_tag );
    
    if(has_tag()) :
 
       while($tagquery->have_posts()) : $tagquery->the_post();
      
    else if(has_category()) :
 
     while($catquery->have_posts()) : $catquery->the_post();
    
    else
?>
<?php $backgroundImg = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'full\' );?>
<div class="blog-post-recent" style="background-image: url(\'<?php echo $backgroundImg[0]; ?>\');">
    <div class="wrap">
        <div class="blog-post-content">
            <div class="blog-post-inner-content">
                <?php the_category();?>
                <div class="blog-post-title"><a href="<?php the_permalink() ?>"><?php the_title( \'<h2>\', \'</h2>\' ); ?></a></div>
                <div class="post-date"><?php the_date(\'F j, Y\'); ?></div>
                <?php the_excerpt(); ?>
                <a class="blog-post-btn"  href="<?php the_permalink() ?>"> Read More...</a>\';
            </div>
        </div>
    </div>
</div>
<?php endif;
    wp_reset_postdata();
?>

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

PHPwhile 命令不是这样工作的,它需要在同一个代码块中开始和结束。你不能在一个里面启动if 然后在其他地方结束(尽管那会很好!)

你能做的就是测试have_posts 在开始之前while 循环,然后在新变量中保留所需的查询。所以我想你想要这样的东西。我假设您的两个$post\\u cat和$post\\u标记搜索可以满足您对这两种情况的需要,即如果此标记没有任何内容,$post\\u标记将为空,而$post\\u cat将获得您想要的内容。

此代码未经测试,但应该执行您想要的操作。HTH公司

    <?php
    // Args to get what we want for the category
    $catArgs = array(
            \'posts_per_page\' => \'1\',
            \'cat\' => \'3\'
            );

    // Args to get one post with tag event
    $tagArgs = array(
            \'posts_per_page\' => \'1\',
            \'cat\' => \'3\',
            \'tag\' => \'event\'
            );  
    
    $tagQuery = new WP_Query( $tagArgs );

    // if there\'s something in the tagquery we\'ll use it, otherwise we\'ll use the other query
    if ($tagQuery->have_posts()) {
        $loopQuery = $tagquery;
    } else { 
        $loopQuery = new WP_Query( $catArgs );
    }

    while ($loopQuery->have_posts()): $loopQuery->the_post();

    ?>
          <b>loop stuff here</b>
    <?php
    endwhile;
?>

相关推荐

Apply filters on date format

我使用Wordpress主题,其中格式日期和时间直接编码为两种格式:<?php the_time(\'d M\'); ?> <?php the_time(\'H:i\'); ?> 我想要的:显示wordpress选项中定义的日期和时间我不想在子主题中创建修改过的模板,我更喜欢使用函数。我已经在函数中添加了php。php此代码有效:add_filter( \'the_time\', \'changer_date_format\', 10, 1 ); //o