如何创建一个循环,显示一个帖子和停止?

时间:2016-03-28 作者:user91325

我正试图在我的wordpress主题上创建一个只显示一篇特色文章的部分。我已安装此插件-https://wordpress.org/plugins/featured-post/ .

我知道我应该整合<?php query_posts($query_string."&featured=yes"); 在循环的某个地方输出特色帖子。我试图修改现有循环中显示常规帖子的代码,但结果显示特色帖子重复了很多次。

这是我尝试使用的循环,它显示了特色帖子,但重复了很多次。如何使其仅显示一次?

<?php 
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();

        query_posts($query_string . "&featured=yes");

        the_author();

        if ( has_post_thumbnail() ) {
            the_post_thumbnail(\'thumbnail\');    
        }
?> 

<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php the_excerpt();?>  
<a href="<?php the_permalink(); ?>"> Read More.... </a>   


<?php
    } // end while
} // end if                      
?>

2 个回复
SO网友:Sumit

query_posts() 即使在执行时也可以更改WP查询,并且至少应该在启动循环之前放置它,即。have_posts(). 目前,您正在设置post数据后放置它,即。the_post(). 导致意外行为。

Example:

global $query_string; //Get current query arguments
query_posts($query_string."&featured=yes");

if (have_posts()) {
    while (have_posts()) {
        the_post(); ?>    

        <? php the_author(); ?>

        <? php
        if (has_post_thumbnail()) {
            the_post_thumbnail(\'thumbnail\');
        } ?>

        <a href = "<?php the_permalink(); ?>"><?php the_title(); ?></a> 
        <?php the_excerpt(); ?> 
        <a href = "<?php the_permalink(); ?>"> Read More.... </a>   


        <?php
    } // end while
} // end if
注:query_posts() 不推荐使用,请咨询插件支持部门,以提供使用其插件的替代方法!

SO网友:Mehul Gohil

我刚刚简化了我的代码。使用“是”和“否”单选按钮添加一个名为“\\u特色”的自定义字段,并添加虚拟的5篇文章,从中将一篇文章的特色设置为“是”,然后使用下面的代码显示特色文章。

$args = array(
    \'posts_per_page\' => 5,
    \'post_status\' => \'publish\',
    \'post_type\' => \'post\',
    \'meta_query\' => array(
       array(
           \'key\' => \'_featured\',
           \'value\' => \'yes\'
       )
    )
);

$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() ) {
    echo \'<ul>\';
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        echo \'<li>\' . get_the_title() . \'</li>\';
    }
    echo \'</ul>\';
} else {
    // no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
希望这有帮助!

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果