根据类别重新安排职位

时间:2013-02-06 作者:user27104

嘿Stackexchange上的所有人!

我正试图找到一种方法,根据循环中的类别(按日期排序)对帖子进行优先级排序。所有员额都按各自的日期分组。日期标签在相同日期的帖子顶部显示一次,如下所示:

日期

邮政1号邮政2号邮政3号邮政之前的日期

第4后第5后等

我正在努力实现这样一个结果,即如果一个帖子属于某个预先确定的类别(我只会使用一个类别),那么它将在某个日期下移动到其他帖子之上:

日期

邮政3号(特殊类别)邮政1号

我对这个话题做了一段时间的研究,我不知道这是否可能。有些查询函数似乎也有类似的用途,但我不确定,而且日期排序使其更难理解。我需要多个循环或类似的东西吗?

我的循环:http://pastebin.com/Pp0rA5j7

循环和排序机制通常如下所示(pastebin表示完整代码):

<?php $w_h = $w_d = $last = 0; ?>

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    <?php
    if ( date(\'Yz\') == get_the_time(\'Yz\') ) {
        if (!$w_d++) echo \'<h6>Today</h6>\';
    } elseif ( date(\'Yz\')-1 == get_the_time(\'Yz\') ) {
        if (!$w_h++) echo \'<h6>Yesterday</h6>\';
    } else {
        echo the_date(\'\', \'<h3>\', \'</h3>\');
    }; ?>

// post content

    <?php endwhile; ?>
    <?php endif; ?>
                     <?php else : ?>
示例站点:http://goldenred.web44.net (我想在2013年2月3日将“测试”类别的后测试6移到其他类别之上)

如果有任何更有经验的人能帮助我,或者至少能为我指明一个大致的方向,我将不胜感激。欢迎所有评论。

2 个回复
SO网友:Max Yudin

也许这是个坏主意,但这是唯一的。

不要立即打印帖子,而是将其收集到不同的变量中:一个用于类别“测试”,另一个用于其他变量。

<?php
$w_h = $w_d = $last = 0;
// init variables to concatenate content later
$primary_posts = $secondary_posts = \'\';
// empty array to fill later
$category_names = array();
if (have_posts()) :
    while (have_posts()) :
        the_post();
        if ( date(\'Yz\') == get_the_time(\'Yz\') ) {
            if (!$w_d++) echo \'<h6>Today</h6>\';
        } elseif ( date(\'Yz\')-1 == get_the_time(\'Yz\') ) {
            if (!$w_h++) echo \'<h6>Yesterday</h6>\';
        } else {
            echo the_date(\'\', \'<h3>\', \'</h3>\');
        };
        // get post categories
        $category_objects = get_the_category();
        foreach($category_objects as $category_object) {
            $category_names[] = $category_object->name;
        }
        // if posts belongs to category \'test\'
        if( in_array(\'test\', $category_names) ) {
            $primary_posts .= \'<div class="post">Post of category "test"\';
            // title, categories and excerpt goes here
            $primary_posts .= \'</div><!-- .post -->\';
        }
        else {
            $secondary_posts .= \'<div class="post">Post of category other than "test"\';
             // title, categories and excerpt goes here
            $secondary_posts .= \'</div><!-- .post -->\';
       }

    endwhile;
    // output all posts of category "test"
    echo $primary_posts;
    // output all posts of category other than "test"
    echo $secondary_posts;
endif;

SO网友:user27104

好的,我查阅了WP\\U查询选项,开始思考是否可以更容易地取消当前的日期排序系统,以获得更高效的、在定制方面更灵活的系统?就我个人而言,我完全支持开箱即用的解决方案,我不喜欢索引中的代码。主要目标是只实现所描述的功能-按日期分组的职位,并在组内划分优先级(2个级别)。我可以改变一切。此功能不适用于客户或任何东西,它适用于我的个人网站。我真的需要这个功能。总之,别再胡说八道了,下面是我找到的代码:

$args = array(\'posts_per_page\' => -1, \'orderby\' => \'date\' );

$myQuery = new WP_Query($args);

$date = \'\';

if ( $myQuery->have_posts() ) : while ( $myQuery->have_posts() ) : $myQuery->the_post();

if ( $date != get_the_date() ) {
    echo $date;
    echo \'<hr />\';
    $date = get_the_date();
}

the_title(); // or whatever you want here.
echo \'<br />\';

endwhile; endif;
wp_reset_postdata();
像这样的东西会是我描述的更好的基础吗?

结束

相关推荐

将小部件正确添加到砖石布局-jQuery&&||PHP

我尝试在我的小部件区域中逐渐添加到砖石布局(下面的PHP),但我无法像其他块一样将其包含到砖石中。 $counts = 0 ; $addin = get_sidebar(\'masonry\'); foreach ($posts as $post) : setup_postdata($post); $counts++; ?> <div class=\"box\">