WordPress Timber получает сообщения произвольного типа

Я просто копаюсь в WordPress плюс Timber и наткнулся на проблему, которую не могу решить.

Я создал настраиваемый тип сообщения под названием «проект», в котором я создал настраиваемое поле под названием «project_category». Это настраиваемое поле содержит флажок из двух вариантов (графика, веб-дизайн).

Вопрос в том, что я могу сделать, чтобы отобразить все проекты, содержащие "графику" project_category?

Вот как я начал:

шаблон graphic.php

Я создал файл graphic.php с этими запросами wp:

$context = Timber::get_context();

$args = array(
    // Get post type project
    'post_type' => 'project',
    // Get all posts
    'posts_per_page' => -1,
    // Gest post by "graphic" category
    'meta_query' => array(
        array(
            'key' => 'project_category',
            'value' => 'graphic',
            'compare' => 'LIKE'
        )
    ),
    // Order by post date
    'orderby' => array(
        'date' => 'DESC'
    ),
);

$posts = Timber::get_posts( $args );
$context['graphic'] = Timber::get_posts('$args');

Timber::render( 'graphic.twig', $context );

graphic.twig Затем я создаю файл веточки с этим циклом.

{% extends "base.twig" %}

{% block content %}

<div class="l-container">

    <main role="main">
        <div class="l-row">
            <h1>My graphic design projects</h1>

            {% for post in posts %}

                <a href="{{ post.link }}" class="project-images l-col l-col--1-of-4 l-col--m-1-of-2">
                    <h2>{{ post.title }}</h2>

                        {% if post.thumbnail %}
                            <img src="{{post.get_thumbnail.src('medium_large')}}" alt="{{post.title}}" />
                        {% endif %}
                </a>

            {% endfor %}
        </div> 
    </main>

</div>

{% endblock %}

С этим решением я могу получить только один проект. Когда я хочу отобразить более одного проекта, проект не отображается. Я пробовал использовать «для публикации в проектах» или «для публикации в post.projects», но толком ничего не вышло.

Что я могу сделать, чтобы отобразить все проекты, содержащие "графику" project_category?


person filnug    schedule 25.10.2016    source источник


Ответы (1)


@filnug, ты почти у цели. Я думаю, что есть некоторая путаница с отправкой варов из PHP в Twig:

graphic.php:

$context = Timber::get_context();
$args = array(
// Get post type project
'post_type' => 'project',
// Get all posts
'posts_per_page' => -1,
// Gest post by "graphic" category
'meta_query' => array(
    array(
        'key' => 'project_category',
        'value' => 'graphic',
        'compare' => 'LIKE'
    )
),
// Order by post date
'orderby' => array(
    'date' => 'DESC'
));

$context['graphics'] = Timber::get_posts( $args );

файл twig:

{% for post in graphics %}
    <h2>{{ post.title }}</h2>
    (other markup goes here)

{% endfor %}

удачи!

person Jared    schedule 01.11.2016
comment
Спасибо большое, Джаред. Я немного опоздал с ответом, но ваш комментарий мне очень помог. Мне просто нужно было добавить рендер моего шаблона веточки (Timber :: render ('graphic.twig', $ context);) в конец запроса wp в graphic.php. - person filnug; 25.11.2016