【问题标题】:How do i get taxonomy categories in order to their posts date in wordpress from latest to oldest我如何获取分类类别,以便他们在 wordpress 中的帖子日期从最新到最旧
【发布时间】:2016-11-30 10:33:21
【问题描述】:

我的网站主页中有视频类别。有一个名为 video-category 的分类和名为 video-list 的自定义帖子类型。

我需要显示分类类别,以便将其发布的日期最新到最旧。所以这意味着如果我今天发布一个视频帖子,那么当前帖子类别必须在最前面,因为它的帖子有最新的日期,其余的应该从最新到最旧。

我不知道我需要从哪里开始。开始获取最新的帖子,不知道接下来是什么。

我目前所拥有的是用下面的代码查看最多的显示它们

<ul class="catLists">
                          <?php
                        $video_args = array(
                            'hide_empty' => true,
                            'fields' => 'all',
                            'hierarchical' => true,
                            'child_of' => 0,
                            'get' => '',
                            'name__like' => '',
                            'pad_counts' => false,
                            'taxonomy' => 'video-category',
                            'cache_domain' => 'core'
                        );
                        $v_terms = get_terms('video-category', $video_args);
                        $coount = 1;
                        global $wpdb;
                        foreach($v_terms as $key => $term) {
                            $count_views = $wpdb->get_results($wpdb->prepare("
                                SELECT SUM(pm.meta_value) AS view_count FROM {$wpdb->postmeta} pm
                                LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
                                LEFT JOIN {$wpdb->term_relationships} tr ON p.ID = tr.object_id
                                LEFT JOIN {$wpdb->term_taxonomy} tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
                                WHERE pm.meta_key = 'post_views_count'
                                AND tt.taxonomy = 'video-category'
                                AND tt.term_id = %d
                            ", $term->term_id));

                            // Add to the category object the result
                            $v_terms[$key]->count_views = (!empty($count_views)) ? $count_views[0]->view_count : 0;


                        } 
                        function cmp($a, $b) {
                            if ($a->count_views == $b->count_views) {
                                return 0;
                            }
                            return ($a->count_views > $b->count_views) ? -1 : 1;
                        }
                        usort($v_terms, "cmp");
                        foreach ($v_terms as $v_term) {
                            $term_link = get_term_link($v_term, 'video-category');
                            if($coount < 7){ 
                            ?>
                    <li class="video_<?php echo $v_term->term_id; ?>_term" id="<?php echo $coount++ ?>">
                        <a href="<?php echo $term_link ;?>" id="<?php echo $v_term->term_id; ?>"><?php echo $v_term->name; ?></a>
                        <span class="active_tab_border"></span>
                    </li>
                        <?php  }else{?>
                 <?php if($coount == '7') { ?>
                 </ul>

想要的结果是首先显示帖子发布日期最新的类别,其余的等等。

提前感谢您的帮助。

【问题讨论】:

  • 是的,但是如何获取最新帖子及其类别以及新帖子何时动态更改类别顺序?
  • 您能否提供一个基本示例,显示“之前和之后”或预期输入和预期结果?
  • 查看我编辑的问题@mike510a

标签: php wordpress taxonomy


【解决方案1】:

您可以使用单个 WP_Query 完成此操作

https://codex.wordpress.org/Class_Reference/WP_Query

$args = array(
    'post_type' => 'video-list',
    'orderby'    => 'date',
    'category_name' => 'video-category'
);
$query = new WP_Query( $args );

【讨论】:

  • 但这只会按日期顺序返回所有帖子,我需要将它们分类,因此需要浏览每个类别中的所有帖子,检查日期和顺序。
  • 使用嵌套循环 --- 一个循环只对类别类型进行查询,然后是另一个查询该特定类别并按日期排序的查询..
  • 您的意思是按日期获取所有帖子,然后按类别排序@mike510a?
  • 是的,如果这就是你想要完成的目标
猜你喜欢
  • 2016-12-25
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多