Wordpress 中的高级自定义字段 - 根据相关帖子对象子字段获取帖子

问题描述 投票:0回答:1
  • 我有 2 种自定义帖子类型 - 事件和客户区。
  • 事件包含组字段“元”和子字段“日期结束”
  • 客户端区域包含帖子对象字段,我为每个客户端区域帖子准确分配 1 个事件。每个活动都有自己的客户区帖子,所以是1对1。我没有打开双向设置。

我需要选择相关事件的元日期结束时间不超过 1 年的所有客户区帖子。

$data_client_zone = new WP_Query([
    'post_type'         => POST_TYPE_CLIENT_ZONE,
    'post_status'       => 'publish',
    'posts_per_page'    => -1,

    'meta_query'     => [
        // Here I don't know how to target event field and its meta
        [
            'key'       => 'meta_date-end',
            'value'     => date('Ymd', strtotime('-1 year')),
            'compare'   => '>=',
            'type'      => 'NUMERIC'
        ],
    ],
]);
wordpress advanced-custom-fields
1个回答
0
投票

恐怕没有办法通过一个人

WP_Query
来完成这件事。首先,您必须获取不超过 1 年的所有事件。
WP_Query
返回的帖子将是一个 ID 数组。

$data_event = new WP_Query([
    'post_type'         => POST_TYPE_EVENT,
    'post_status'       => 'publish',
    'posts_per_page'    => -1,
    'fields'            => 'ids',
    'meta_query'        => [
        [
            'key'       => 'meta_date-end',
            'value'     => date('Ymd', strtotime('-1 year')),
            'compare'   => '>=',
            'type'      => 'NUMERIC'
        ],
    ],
]);

然后您需要查询客户端区域,将

client_zone_event
自定义字段与之前创建的数组 od events ids 进行比较。对于此特定代码,我假设
client_zone_event
自定义字段配置为返回帖子 ID。

$data_client_zone = new WP_Query([
    'post_type'         => POST_TYPE_CLIENT_ZONE,
    'post_status'       => 'publish',
    'posts_per_page'    => -1,
    'meta_query'        => [
        [
            'key'       => 'client_zone_event',
            'value'     => $data_event->posts,
            'compare'   => 'IN',
        ],
    ],
]);
© www.soinside.com 2019 - 2024. All rights reserved.