在WordPress中的if else语句中嵌套while循环

时间:2016-03-08 10:55:02

标签: php wordpress

我有一个while循环,可以获取index.php上某个类别的所有页面,这是我的帖子页面。

但是,我想更改下面的代码,因此如果它是主页,它不会运行此循环,但会显示一些文字

循环工作的代码:

<?php 
$category = get_category( get_query_var( 'cat' ) );
$cat_id = $category->cat_ID;

$loop = new WP_Query( array( 
    'post_type' => 'story', 
    'cat' => $cat_id, 
    'posts_per_page' => 10,
    'orderby' => 'date', 
    'order' => 'DESC'
) );

while ( $loop->have_posts() ) : $loop->the_post(); 
?> <a href="<?php echo the_permalink(); ?>"><?php the_title();?></a>
endwhile;
?>

在此代码中,除了主页之外的任何页面都没有加载:

 <?php
    $category = get_category( get_query_var( 'cat' ) );
    $cat_id = $category->cat_ID;

    $loop = array(
      'post_type' => 'story', 
        'cat' => $cat_id,
        'posts_per_page' => 10,
        'orderby' => 'date',
        'order' => 'DESC' ,
    'paged'=>$paged
    );
        if ( is_home() ) {      


        echo 'Welcome!';


    } else if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

                <h2><a href="<?php echo get_permalink(); ?>"><?php the_title(); ?></a></h2>              

    <?php endwhile; endif; ?>

2 个答案:

答案 0 :(得分:1)

您需要将查询和循环包装在is_home()条件

if ( !is_home() ) { // This is not the home page
    // Add your query and loop here
    $category = get_category( get_query_var( 'cat' ) );
    $cat_id = $category->cat_ID;

    $loop = new WP_Query( array( 
        'post_type' => 'story', 
        'cat' => $cat_id, 
        'posts_per_page' => 10,
        'orderby' => 'date', 
        'order' => 'DESC'
    ) );

    while ( $loop->have_posts() ) : $loop->the_post(); 
    ?> <a href="<?php echo the_permalink(); ?>"><?php the_title();?></a>
    endwhile;

} else { // This is the homepage
    echo 'Some text here';
}

答案 1 :(得分:0)

<?php
    $category = get_category( get_query_var( 'cat' ) );
    $cat_id = $category->cat_ID;

    $loop = new WP_Query( array( 
    'post_type' => 'story', 
    'cat' => $cat_id, 
    'posts_per_page' => 10,
    'orderby' => 'date', 
    'order' => 'DESC'
) );
if ( $loop->have_posts() ) : while ( $loop->have_posts() ) : $the_query->the_post(); 
    if ( is_home() ) {      
        echo 'Welcome!';
    } 
    else{?>
                <h2><a href="<?php echo get_permalink(); ?>"><?php the_title();              
     }

    <?php endwhile; endif; ?>
相关问题