我的php-wordpress if while循环仅在第一次运行

时间:2019-09-11 11:35:01

标签: php wordpress if-statement while-loop

我的代码有错字! 但是我不允许删除它,所以在这里您可以了解一些可以做得比我更好的方法;)

问题如下,我的查询正在跳过循环的一部分。 我有一个查询,该查询使用帖子的标题和缩略图作为锚点。 它为第一篇文章运行查询很好,但第二篇文章没有加载到缩略图中,但它确实显示了标题,并且仅在缩略图之后提到了标题,找不到与它相似的小图像要么。我的第一个问题是在这里发布的,因此错误地将项目放错了地方。

<?php


// WP_Query arguments
$args = array (
'post_type'              => array( 'klantcase' ),
'post_status'            => array( 'publish' ),
'nopaging'               => true,
'order'                  => 'ASC',
'orderby'                => 'menu_order',
);

// The Query
$klantcases = new WP_Query( $args );

// The Loop
if ( $klantcases->have_posts() ) {
    while ( $klantcases->have_posts() ) {
    $klantcases->the_post();
        echo "<a href=".get_the_permalink().">";
        echo get_the_post_thumbnail( null, $size = 'post-thumbnail');?><br><?php
        echo the_title();?><br><?php
        echo "</a>";
    }
} else {
    echo "no posts found";
}
// Restore original Post Data
wp_reset_postdata();

现在可能有很多方法可以改善此循环,但是正如所提到的,这对所有这些都是非常新的。就是说,我很想听听你们如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

您不需要echo the_title()-它已经回显了,所以我猜想这就是问题的一部分。您还可以使循环更简单。

您不需要'post_status'参数,因为默认为publish

在循环中,让我们使用WP的内置回显函数:the_permalink()the_title()the_post_thumbnail()。您不必将任何参数传递给the_post_thumbnail(),因为您只是在代码中调用默认值。

<?php

// WP_Query arguments
$args = [
    'post_type'   => ['klantcase'],
    'nopaging'    => TRUE,
    'order'       => 'ASC',
    'orderby'     => 'menu_order',
];

// The Query
$klantcases = new WP_Query( $args );

// The Loop
if ( $klantcases->have_posts() ) {
    while ( $klantcases->have_posts() ) {
        $klantcases->the_post(); ?>

        <a href="<?php the_permalink(); ?>">
            <?php the_post_thumbnail(); ?><br>
            <?php the_title(); ?>
        </a>
        <?php
    }
} else {
    echo 'no posts found';
}
// Restore original Post Data
wp_reset_postdata();

答案 1 :(得分:0)

在while循环的顶部定义空变量。 并在循环中将html与该空变量连接在一起。 例如。

$output = '';
        if ( $klantcases->have_posts() ) {

            while ( $klantcases->have_posts() ) {
                $klantcases->the_post();
                $output .= '<a href="'.the_permalink().'">';
                $output .= the_post_thumbnail() .'<br>';
                $output .= the_title();
                $output .= '</a>';
            }
        } else {
            echo "no posts found";
        }

        echo $output;