0

我是 PHP 新手,我尝试编写调用某个类别中最近帖子的调用,但似乎我进入了回显循环。

我将如何优化以下代码,使其看起来不像它那样?

<?php $cat_id = 3;
$latest_cat_post = new WP_Query( array('posts_per_page' => 1, 'category__in' => array($cat_id)));
if( $latest_cat_post->have_posts() ) : while( $latest_cat_post->have_posts() ) : $latest_cat_post->the_post();
echo '<a href="';
the_permalink();
echo '">';
if ( has_post_thumbnail() ) {
the_post_thumbnail();
}
echo '</a>';
echo '<div class="widget-box-text">'
echo '<a href="';
the_permalink();
echo '">';
the_title();
echo '</a>';
the_excerpt();
echo '</div><!-- widget-box-text -->'
endwhile; endif; ?>

非常感谢,我期待学习编程,并希望我的代码至少符合这种规范。

4

2 回答 2

2

您只需要正确格式化和缩进该代码并使用 PHP 模板而不是echo

<?php
$cat_id = 3;
$query = new WP_Query(array(
  'posts_per_page' => 1,
  'category__in' => $cat_id
));
?>

<?php while ($query->have_posts()): $query->the_post(); ?>
  <a href="<?php the_permalink(); ?>"></a>
  <?php if (has_post_thumbnail()) the_post_thumbnail(); ?>
  <div class="widget-box-text">
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    <?php the_excerpt(); ?>
  </div>
<?php endwhile; ?>
于 2013-04-06T01:27:55.583 回答
1

如果您不想在 PHP 和 HTML 之间交替使用,您可以坚持使用 PHP。这只是编写相同内容的另一种方式。

<?php

$cat_id = 3;
$query = new WP_Query
(
    array
    (
        'posts_per_page' => 1,
        'category__in' => $cat_id
    )
);

while($query->have_posts())
{
    $query->the_post();

    echo  '<a href="'.the_permalink().'"></a>';

    if (has_post_thumbnail()){
        the_post_thumbnail();
    }

    echo  '<div class="widget-box-text">'
                .'<a href="'.the_permalink().'">'.the_title().'</a>';

    the_excerpt();

    echo '</div>';
}

?>
于 2013-04-06T02:27:21.583 回答