Timber / Twig:类别归档页面未排序

时间:2018-03-27 20:03:12

标签: wordpress timber

我有一个CPT('地方')类别存档模板,我希望以alpha顺序显示所有相关帖子。以下主要是工作 - 我得到类别描述和照片(ACF数据)和与特定类别相关的帖子列表,但排序不起作用。

PHP:

$context = Timber::get_context();

$term = new TimberTerm();
$context['current_cat'] = $term;

$templates = array( 'category.twig', 'archive.twig', 'index.twig' );
Timber::render( $templates, $context );

嫩枝:

<section class="places ">
    <div class="places-list">
            <h3>Places in: {{current_cat.name}}</h3>
            <div class="places-container">
                <ul>
                {% for post in current_cat.posts(-1, '')|sort %}
                    <li id="wpgmza_marker_{{post.get_field('map_marker_id')}}" mid="{{post.get_field('map_marker_id')}}" mapid="1" class="wpgmaps_blist_row">
                        <div>{{post.title}}</div>
                    </li>
                {% endfor %}
                </ul>

谢谢!

2 个答案:

答案 0 :(得分:0)

请尝试这样做(替换上面代码的前五行):

                            c
c                    -0.8356286   2410047 -0.6264538 0742332   0.  83643324222082
  -0.835628612410047          1         1          0       0    0      0
  -0.626453810742332          0         0          1       1    0      0
  0.183643324222082           0         0          0       0    1      1

答案 1 :(得分:0)

关于Twig's sort filter和您的情况,我会怀疑两件事:1.由于顺序未定义,因此默认为ASC,也许您的查询结果已经是这种方式。 2.您没有明确说明排序的依据,并且我可以想象后查询不是一个简单的列表。

或者:对查询进行排序

尽管Twig的排序过滤器很方便,并且在某些情况下可能会起作用,但最好在初始PHP查询中定义排序以及其他查询属性。这样可以完全控制,并可以利用通过GET或POST在页面之间传递的变量。

以下为我工作:

archive.php

$templates = array( 'pages/archive.twig', 'pages/index.twig' );

if ( ! isset( $paged ) || ! $paged ) {
    $paged = 1;
}

$context = Timber::context();

$args = array(
    'posts_per_page' => 10,
    'paged'          => $paged,
    'post_type' => get_post_type(),

    // Ordering option 1: based on regular field
    // 'orderby' => 'desc',
    // 'order'   => title,

    // Ordering option 2: based on ACF field
    'meta_key' => 'my_custom_field',
    'orderby'  => array('meta_value' => 'DESC'),
);

$context['title'] = 'Archive';

if ( is_tag() ) {
    $context['title'] = single_tag_title( '', false );
} elseif ( is_category() ) {
    $context['title'] = single_cat_title( '', false );
    array_unshift( $templates, 'pages/archive-' . get_query_var( 'cat' ) . '.twig' );
} elseif ( is_post_type_archive() ) {
    $context['title'] = post_type_archive_title('', false );
    array_unshift( $templates, 'pages/archive-' . get_post_type() . '.twig' );
}

$context['posts'] = new \Timber\PostQuery($args);

Timber::render( $templates, $context );

archive-book.twig(例如)

{% extends 'layouts/base.twig' %}

{% block content %}

    {% include 'partials/page-controls.twig' %}

    <div>    
        {% for post in posts %}
            <div>
                {% include 'partials/post-tease-card.twig' %}
            </div>
        {% endfor %}    
    </div>

    {% include 'partials/pagination.twig' %}

{% endblock %}