Получение пользовательских данных типа поста, включая ACF с Timber? - PullRequest
0 голосов
/ 10 марта 2020

Мне нужно получить пользовательские данные о типе записей для использования с Timber и Twig, они работают нормально, используя стандартный WP_Query, такой как:

// Get the testimonials custom post type posts
$args = array(
    'post_type' => 'testimonial',
    'post_status' => 'publish',
    'perm' => 'readable',
    'nopaging' => true
);

$context['testimonials'] = new WP_Query( $args );

// Restore the global $post to the current post in the main query
wp_reset_postdata();

Однако это, очевидно, не дает полей ACF.

Собирался сделать следующее, как указано в документации по Timber:

// Get the testimonials custom post type posts
$args = array(
    'post_type' => 'testimonial',
    'post_status' => 'publish',
    'perm' => 'readable',
    'nopaging' => true
);

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

Однако, похоже, что get_posts становится устаревшим в 2.0 .

Кажется, что лучший способ сделать это - использовать PostQuery от Timber, но из-за отсутствия документации я не уверен, является ли это более или менее инкапсуляцией WP_query, и я могу просто сделать что-то вроде:

// Get the testimonials custom post type posts
$args = array(
    'post_type' => 'testimonial',
    'post_status' => 'publish',
    'perm' => 'readable',
    'nopaging' => true
);

$context['testimonials'] = new PostQuery(array('query' => $args));

Я на правильном пути здесь или как правильно?

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Хорошо, найдя этот ответ , а также немного покопавшись в коде, я узнал, как это сделать, я считаю:

// Get the testimonials custom post type posts
$args = array(
    'post_type' => 'testimonial',
    'post_status' => 'publish',
    'perm' => 'readable',
    'nopaging' => true
);

$query = new Timber\PostQuery($args);

// Get an array of post objects
$context['posts'] = $query->get_posts();

Из того, что я могу сказать, все соответствующие WP_Query аргументы, кажется, также работают с использованием этого метода - но если вам нужна нумерация страниц, я бы посоветовал прочитать другой ответ, на который я ссылался, так как он содержит больше информации об этом.

0 голосов
/ 10 марта 2020

Поля ACF имеют странные числовые ключи в базе данных. Чтобы получить данные просто используйте их собственную функцию get_fields (); https://www.advancedcustomfields.com/resources/get_fields/

...