First post of each category

时间:2014-02-24 作者:tmyie

我正在尝试创建一个简单的循环,以获取3个选定类别的最新帖子。我一直在寻找类似的东西来学习,但大多数都过于复杂。

目前,我有:

    <?php 

    // WP_Query arguments
$args = array (
    \'category_name\'          => array(\'lifestyle\', \'fashion\', \'beauty\')
);

// The Query
$query = new WP_Query( $args[0] );

// The Loop
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        // do something
    }
} else {
    // no posts found
}

// Restore original Post Data
wp_reset_postdata();

?>
我想我需要一个foreach 循环,但我不确定如何在这个场景中实现它,以及每个帖子的最新内容?

任何帮助都会很好。

1 个回复
SO网友:Shazzad

用一个简单的查询不可能得到每个类别一篇文章,甚至一个复杂的查询也需要比3个单独的查询更多的时间。所以,如果你想要最简单的,那么这就是解决方案-

$cats = array(\'lifestyle\', \'fashion\', \'beauty\');
$exclude_posts = array();
foreach( $cats as $cat )
{
    // build query argument
    $query_args = array(
        \'category_name\' => $cat,
        \'showposts\' => 1,
        \'post_type\' => \'post\',
        \'post_status\' => \'publish\',
        \'orderby\' => \'date\',
        \'order\' => \'DESC\'
    );

    // exclude post that already have been fetched
    // this would be useful if multiple category is assigned for same post
    if( !empty($exclude_posts) )
        $query_args[\'post__not_in\'] = $exclude_posts;

    // do query
    $query = new WP_Query( $query_args );

    // check if query have any post
    if ( $query->have_posts() ) {

        // start loop
        while ( $query->have_posts() ) {
            // set post global
            $query->the_post();

            // add current post id to exclusion array
            $exclude_posts[] = get_the_ID();


            // do something
        }
    } else {
        // no posts found
    }

    // Restore original Post Data
    wp_reset_postdata();
}

结束

相关推荐

Redirect loop in /wp-admin/

今天,我管理的一个网站管理员无法访问。我刚刚在服务器上更新了apache,以启用mod\\u deflate,并将PHP从5.3升级到5.4。因为每次我尝试访问/wp admin/I时都会收到重定向循环错误。我尝试了所有常见的嫌疑犯,即:清除了Cookie和缓存,尝试了不同的浏览器,禁用了主题,删除了禁用的Cookie。htaccess检查了wp\\U选项中的site\\u url等,但运气不佳。我可以访问wp登录。php很好,但不是/wp管理员/任何帮助都将不胜感激,因为我完全被难住了。