如何修改WP查询以针对第一个最近发布的帖子来调整内容

时间:2016-07-15 作者:Darren Bachan

我正在使用一个函数从“新闻”类别中获取最近的3篇帖子

add_shortcode( \'show_news\', \'news_query\' );

function news_query() {
    $args = array(
        \'posts_per_page\' => 3,
        \'category_name\' => \'news\',
    );
    $news_query = new WP_Query( $args );
    if ( $news_query->have_posts() ) :
        $html_out = \'<article>\';
        while ( $news_query->have_posts() ) :
            $news_query->the_post();
            // Do stuff with each post here
            $html_out .= \'<div class="news-item"><div class="meta-date">\' . Date(\'m/y\') . \'</div><div class="meta-info"><div class="meta-title"><h4><a href="\' . get_permalink() . \'">\' . get_the_title() . \'</a></h4></div></div></div>\';
        endwhile;
        $html_out .= \'</article>\';
    else : // No results
        echo "Nothing to show";
    endif;
    wp_reset_query();
    return $html_out;
}
但我需要针对最新的帖子,并为其提供一个类,以便我可以对其进行不同的样式设置并添加the_excerpt(); 对它也一样。

我需要对计数做些什么来瞄准它吗?这就是我的设想:

新闻项目=标题+摘录(最近的项目,将有class=“foo”)新闻项目=标题新闻项目=标题

1 个回复
SO网友:JMau

此处不需要wp\\u reset\\u query(),请使用wp\\u reset\\u postdata(),因为这是一个辅助查询,不需要重置为原始主查询。

切勿在短代码中使用echo,请替换行:

echo "Nothing to show";
使用:

$html_out = "Nothing to show";
要获得您想要的,您可以使用:

global $wp_query;
$wp_query->current_post
它将为您提供循环中立柱的当前位置。小心,第一个post位置是0而不是1。因此,您可以执行以下操作:

if ( 0 === $wp_query->current_post ) { 
    /*some code*/ 
} else { 
    /* some code */ 
}

相关推荐

我可以将参数传递给Add_ShortCode()函数吗?

正如标题所述,我需要向add_shortcode() 作用换句话说,我传递的那些参数将在的回调函数中使用add_shortcode(). 我该怎么做?请注意,这些与以下结构无关[shortcode 1 2 3] 哪里1, 2, 和3 是用户传递的参数。在我的情况下,参数仅用于编程目的,不应由用户负责。谢谢