按变量自定义字段查询WP

时间:2020-07-26 作者:Alex Smooth Websites

我有一个CPT,其中包含一个大型字段组(“Global”),还有两个其他字段组,其中包含ACF克隆字段(“NJ”和“PA”)。NJ和PA中的字段与Global中的字段相同,只是它们的前缀为NJ\\u1和PA\\u2。

我还有一个单独的单选按钮字段,在这里我指定哪个是该特定帖子的主要位置(“primary\\u geo”)。这是有效的,因为它使我能够控制帖子本身显示的信息。

我的问题是:当我使用WP Query创建这些帖子的列表时,我想根据以primary\\u geo为前缀的字段中的数据对帖子进行过滤和排序。这意味着有时pa\\U字段将与nj\\U字段进行比较。但因为它在循环之外,我不能得到那个值。

有没有一种方法可以让我实现我所追求的目标?

2 个回复
SO网友:mozboz

直接使用WP\\u查询,我认为这是不可能的,因为您需要WP\\u查询中的一些逻辑,它允许您说“如果primary\\u geo设置为NJ,那么查看NJ,或者如果设置为PA,那么查看PA”。

但是,您可以使用钩子更新存储“有效”地理字段的帖子上的一个新元值,即“primary\\u geo”指向的任何位置的值。您可以通过以下方式实现:

add_action(\'save_post\', \'update_geo_value\', 10, 2);

function update_geo_value($postID, $post) {
   $primaryGeo = get_post_meta($postID, \'primary_geo\');

   if ($primaryGeo == \'NJ\') {
       $georesult = get_post_meta($postID, \'nj_field\');
   } elseif ($primaryGeo == \'PA\') {
       $georesult = get_post_meta($postID, \'pa_field\');
   } else { 
       echo "This should probably never happen. Put some debug logging here!";
   }

   update_post_meta($postId, \'effective_geo_value\', $georesult);

}

Note this is example code and may need correction / changing values or code according to your use variables, etc.

因此,这样做的目的是将关于确定要使用哪个字段的逻辑移动到保存帖子时的位置,然后值“effective\\u geo\\u value”就是您需要的对应于NJ或PA的值。然后,您可以在WP\\U查询中使用effective\\u geo\\u valuepost meta parameters

注:

每次更新此帖子涉及的任何元值时,都需要更新此计算值!也就是说,如果物品出于某种原因从新泽西州移动到宾夕法尼亚州,你需要更新有效的_geo_值HTH

SO网友:t2pe

不完全确定这对你有帮助,但是。。WP\\u Query实际上允许您提供一个自定义字段来过滤输出。看见this link

因此,如果您事先知道自定义字段的名称(在您的示例中,我无法确切地确定您是否知道),那么您可以直接提供它,或者作为传递到args的变量提供它。然后,查询只输出带有提供的自定义字段的帖子。

当然,这可能对输出的排序没有帮助,除非您只需要默认的排序选项?

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post