基于两个值的自定义帖子类型的WP元查询

时间:2018-11-28 作者:Vitaly

我希望你能帮助我,给我一个提示,告诉我一些我正在努力实现但却失败得很惨的事情。

我正在研究WordPress的房地产主题——房地产。以下是网站链接:https://lnobrerealestate.pt/

我试图实现的是有两个特色物业区,一个是销售区,一个是租赁区。

因此,为了做到这一点,我需要更改获取帖子的查询。获取特征属性列表的原始查询是:

/* Featured Properties Query Arguments */
$featured_properties_args = array(
    \'post_type\'         => \'property\',
    \'posts_per_page\'    => 12,
    \'meta_query\'        => array(
        array(
            \'key\'       => \'REAL_HOMES_featured\',
            \'value\'     => 1,
            \'compare\'   => \'=\',
            \'type\'      => \'NUMERIC\'
        )
    )
);
此查询获取标记为特色的前12个属性。我需要补充的是另一个条件,可以检查房产状态是“待售”还是“待租”。

我可以通过此查询获取属性状态数组:

        $property_status_terms = get_terms(array(
                \'taxonomy\'   => "property-status",
                \'orderby\'    => \'name\',
                \'order\'      => \'ASC\',
                \'hide_empty\' => false
            )
        );

        if (! empty($property_status_terms)) {
            foreach ($property_status_terms as $property_status) {
                echo \'<p>\' . $property_status->name . \'</p>\';
            }
        }
因此,我认为基于这两个查询,我可以执行以下操作:

/* Featured Properties Query Arguments */
    $featured_properties_args = array(
        \'post_type\'         => \'property\',
        \'posts_per_page\'    => 12,
        \'meta_query\'        => array(
            \'relation\' => \'AND\',
            array(
                \'key\'       => \'REAL_HOMES_featured\',
                \'value\'     => 1,
                \'compare\'   => \'=\',
                \'type\'      => \'NUMERIC\'
            ),
            get_terms(array(
            \'taxonomy\'       => \'property-status\',
            \'value\'     => array(\'For Rent\', \'Arrendamento\'),
            \'compare\'   => \'IN\',
             )
             )
        )
    );
我将财产状态数组与两个值进行比较——英语的租金值和葡萄牙语的Arrendamento值。

这个查询不会产生我想要实现的结果,也无法得到我在这里缺少的东西。看起来很直截了当。

我希望你能给我一个建议。

谢谢

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

好的,这就是我所说的“一厢情愿的编码”的一个小例子。)

get_terms(array(
    \'taxonomy\'       => \'property-status\',
    \'value\'     => array(\'For Rent\', \'Arrendamento\'),
    \'compare\'   => \'IN\',
) )
您使用get_terms 函数,它将

检索给定分类法或分类法列表中的术语。

您可以在查询的meta\\u query部分中使用此选项,它用于查询自定义字段。

所以它根本做不到任何事情。。。术语不是有效的meta\\u查询查询。。。

但这当然可以做到。。。您只需检查文档WP_Query...

您已经有了:

$featured_properties_args = array(
    \'post_type\'         => \'property\',
    \'posts_per_page\'    => 12,
    \'meta_query\'        => array(
        array(
            \'key\'       => \'REAL_HOMES_featured\',
            \'value\'     => 1,
            \'compare\'   => \'=\',
            \'type\'      => \'NUMERIC\'
        )
    )
);
而且你知道这会让你拥有特色的房产。所以你所要做的就是tax query 其中:

$featured_properties_args = array(
    \'post_type\'         => \'property\',
    \'posts_per_page\'    => 12,
    \'meta_query\'        => array(
        array(
            \'key\'       => \'REAL_HOMES_featured\',
            \'value\'     => 1,
            \'compare\'   => \'=\',
            \'type\'      => \'NUMERIC\'
        )
    ),
    \'tax_query\'         => array(
        array(
            \'taxonomy\'  => \'property-status\',
            \'field\'     => \'name\',
            \'terms\'     => array(\'For Rent\', \'Arrendamento\'),
        )
    ) 
);

结束

相关推荐