【问题标题】:Filter custom post type by category按类别过滤自定义帖子类型
【发布时间】:2019-11-24 15:29:00
【问题描述】:

我正在尝试使用 Timber 和 Twig 在<select> 元素中列出特定帖子类型的所有类别。当用户然后选择一个类别时,我只希望显示该类别中的帖子。我怎样才能做到这一点?感谢所有帮助。

我的控制器:

<?php
/**
 * Template Name: QnA Page Template
 */

$context = Timber::get_context();
$post = new Timber\Post();

$args = array (
  'post_type' => 'qna',
  'posts_per_page' => -1
);

$context['post'] = $post;
$context['qna'] = Timber::get_posts($args);
Timber::render('templates/pages/template-qna.twig', $context);

我的模板,到目前为止:

{% block content %}
    <select id="filter-by-category">
        <option></option>
        ...
    </select>
{% endblock %}

【问题讨论】:

  • 这里没有真正取得任何进展..
  • 有人有想法吗?
  • 有人有想法吗?
  • 也许我做错了?
  • 首先使用 $context['categories'] = Timber::get_terms('category'); 设置类别然后在您的模板中循环以供您选择。

标签: php wordpress twig timber


【解决方案1】:

试试这个:

<?php
/**
 * Template Name: QnA Page Template
 */
$context = Timber::get_context();

$context['post'] = new Timber\Post();
$context['qna']  = new Timber\PostQuery( [
    'post_type'      => 'qna',
    'posts_per_page' => -1
] );

$context['categories'] = Timber::get_terms( [
    'taxonomy' => 'category',
] );

Timber::render( 'templates/pages/template-qna.twig', $context );

要将您的类别与&lt;select&gt; 标签一起使用,您可以使用以下内容:

{% block content %}
    <select id="filter-by-category">
        {% for category in categories %}
            <option value="{{ category.link }}">{{ category.title }}</option>
        {% endfor %}
    </select>
{% endblock %}

当然,您还需要使用 JavaScript 观察您选择的变化,然后将用户重定向到所选类别存档。

在无序列表中显示所有类别,而不是使用选择,它更容易并且可能更用户友好:

{% block content %}
    <ul>
        {% for category in categories %}
            <li><a href="{{ category.link }}">{{ category.title }}</a></li>
        {% endfor %}
    </ul>
{% endblock %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多