ACF-不带ID的关系查询

时间:2019-04-24 作者:Gregory

我有不同的CPT(酒店、市场、城市等)

我的关系字段用于将CPT链接到城市(CITY)。

现在在一个页面(酒店页面)中,我想链接“同一城市的其他酒店”。

如何进行查询?我知道如何使用实际页面的ID进行ID查询,但我需要的是:

$city=get\\u字段(\'contact\\u city\')$查询=将contact\\u city的所有酒店显示为$city

但我没有找到任何解决办法。

2 个回复
最合适的回答,由SO网友:Gregory 整理而成

如果关系字段中只有1个值:

$city_id = $bnb_ville[0]->ID;
如果可能超过1个值:

$city_id = [];
foreach ($var as $post) {
    $city_id[] = $post->ID;
}
$bnb\\u ville是get\\u field()的变量!

SO网友:nmr

创建查询您必须使用meta_query parameter.
您的关系字段作为序列化数组保存在DB中,因此,在meta_query 参数应使用LIKE 操作人员

假设CTPhotel 只有一个city 分配后,查询将如下所示:

$cities = get_field(\'contact_city\');
if ( is_array($cities) && count($cities) ) {

    $city_id = current($cities)->ID;
    $args = [
        \'post_type\' => \'hotel\',
        \'meta_query\' => [
            \'key\'   => \'contact_city\',
            \'value\' => \'"\' . $city_id . \'"\',
            \'compare\' => \'LIKE\',
        ],
        // ...
    ];
    $my_query = new WP_Query( $args );
}
如果发布hotel 有几个city 已分配,并且您希望显示从分配给当前查看的酒店的所有位置到酒店的链接,meta_query 将更改如下:

$args = [
        \'post_type\' => \'hotel\',
        \'meta_query\' => [
            \'relation\' => OR,
            [ /* \'key\', \'value\', \'compare\' */ ],
            [ /* \'key\', \'value\', \'compare\' */ ],
        ],
Sample code:

$meta_query = [ \'relation\' => \'OR\' ];
foreach( $cities as $city )
{
    $meta_query[] = [
        \'key\'   => \'contact_city\',
        \'value\' => \'"\' . $city->ID . \'"\',
        \'compare\' => \'LIKE\',
    ];
}
$args = [
    \'post_type\' => \'hotel\',
    \'meta_query\' => $meta_query,
];
$my_query = new WP_Query( $args );

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: