Древесина get_posts в шаблоне / просмотре

У меня есть поле ACF, которое позволяет выбирать типы сообщений, которые затем будут помещены в карусель. Число может быть любым, поскольку каждый модуль на странице контролируется администраторами.

В шаблоне карусели я хочу иметь возможность получать последние сообщения для выбранного типа сообщений. Я могу это сделать с помощью:

{% set items = fn('get_posts', {'post_type': 'team' }) %}

Есть ли способ сделать это, не вызывая его как функцию? Я думал примерно так:

{% set items = Posts(params) %}

Возможно ли это или вызов функции единственный / лучший способ?

Спасибо


person philsbury    schedule 07.12.2017    source источник
comment
Я думаю, что самым чистым способом было бы получить дополнительные сообщения, определенные настраиваемым полем в вашем файле контроллера, с помощью TimberPost и передать их в представление.   -  person Luckyfella    schedule 09.12.2017
comment
ACF - это поле отношений? если это так, относитесь к нему как к повторителю при вызове ветки   -  person RMH    schedule 04.01.2018


Ответы (1)


В настоящее время то, что вы хотите сделать, невозможно. Вы можете использовать Timber::get_posts в нотации массива, чтобы получить массив сообщений Timber вместо обычных сообщений WordPress:

{% set items = fn(['Timber\Timber', 'get_posts'], { 'post_type': 'team' }) %}

Но в будущем для получения сообщений рекомендуется использовать Timber\PostQuery. В следующей версии 2 Timber мы добавим функцию PostQuery в Twig. Это означает, что вы сможете сделать что-то вроде этого:

{% for items in PostQuery(params) %}
    {# Display item #}
{% endfor }

Это хорошо подойдет для более простых случаев использования. Я также порекомендовал бы то, что сказал Luckyfella, возможно, лучше вообще не иметь этого в Twig, но подготовить все на PHP, а затем передать элементы в представление Twig.

person Gchtr    schedule 21.01.2018
comment
С нетерпением жду возможности сделать PostQuery в Timber v2. Я только что попробовал ваш первый пример кода с Timber v1.10.0, и мне пришлось изменить fn(['Timber\Timber' на fn(['Timber, чтобы он заработал. Надеюсь, когда-нибудь это поможет кому-то другому =) - person patrickzdb; 12.07.2019