获取自定义 post 类型的数据,包括 ACF with Timber?

Getting custom post type data including ACF with Timber?

我需要获取用于 Timber 和 Twig 的自定义 post 类型数据,使用标准 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 似乎正在 deprecated in 2.0

似乎最好的方法是使用 Timber 的 PostQuery,但由于缺少文档,我不确定它是否或多或少是 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));

我走在正确的轨道上还是正确的方法是什么?

ACF 字段在数据库中有一些奇怪的数字键。要获取数据,只需使用它们自己的功能 get_fields(); https://www.advancedcustomfields.com/resources/get_fields/

好的,在找到 this answer 并深入研究代码后,我发现了如何做到这一点,我相信:

// 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 args 似乎也可以使用此方法工作 - 但如果您需要分页才能工作,我建议您阅读我链接到的其他答案,因为它包含更多内容有关的信息。