【问题标题】:Wordpress Advanced custom fields meta query filter in post object帖子对象中的 Wordpress 高级自定义字段元查询过滤器
【发布时间】:2018-07-04 07:53:36
【问题描述】:

我有以下事件发布类型的 JSON 格式

JSON Format
Event Channel Fields
Event Details Fields

我正在尝试过滤所有即将发生的事件(即未来日期)并将“Michael Kay”作为 event_channel。

以下是我的自定义查询,但无法正常工作。问题出在 event_channel 上,因为它是“频道”自定义帖子的帖子对象。元查询的第二部分不起作用。

<pre>
$today_r = date_i18n('j M Y g:i A');
$today = strtotime($today_r);  
    $upcoming_events = new WP_QUERY(array(
                        'post_type'         =>'event',          
                        'post_status'       => 'publish', 
                        'order'             => 'ASC',
                        'orderby'           => 'meta_value',
                        'meta_key'          => 'event_start_date',
                        'meta_value'        => $today,
                        'meta_compare'      => '>=',
                        'meta_query'    => array(
                            'relation'      => 'AND',
                            array(
                                'key'       => 'event_start_date',
                                'value'     => $today,
                                'compare'   => '>=',
                            ),
                            array(
                                'relation'      => 'AND',
                                'key'       => 'event_channel',
                                    array(
                                        'key'       => 'post_title',
                                        'value'     => 'Michael Kay',
                                        'compare'   => 'LIKE',                                    
                                    ),
                            )
                        ),
                        "posts_per_page" => 6     
                    ));

</pre>

【问题讨论】:

  • 你的问题不清楚,描述的更像你想要的,错误是什么等等...
  • 问题是如何仅获取具有“Michael Kay”作为 event_channel 的事件。

标签: wordpress


【解决方案1】:

您需要调整 $args 数组。您不应将 post_title 作为元键传递。 使用这个:

$upcoming_events = new WP_QUERY(array(
                        'post_type'         =>'event',          
                        'post_status'       => 'publish', 
                        'order'             => 'ASC',
                        'orderby'           => 'meta_value',
                        'meta_key'          => 'event_start_date',
                        'meta_value'        => $today,
                        'meta_compare'      => '>=',
                        's' => 'Michael Kay',
                        "posts_per_page" => 6     
                    ));

更新: 这是按 ACF 子字段过滤的查询:

$upcoming_events = new WP_QUERY(array(
                        'post_type'         =>'event',          
                        'post_status'       => 'publish', 
                        'order'             => 'ASC',
                        'orderby'           => 'meta_value',
                        'meta_key'          => 'event_start_date',
                        'meta_value'        => $today,
                        'meta_compare'      => '>=',
                        'meta_query'    => array(
                            array(
                                'key'       => 'event_channel_0_post_title',
                                'value'     => 'Michael Kay',
                                'compare'   => 'LIKE',
                            ),
                           )));

要知道 event_channel_0_post_title 键的准确名称,请转到 PHPMYADMIN->wp_postmeta 表,并在那里搜索“Michael Kay”。如果 event_channel_0_post_title 不正确,您将在那里看到正确的名称。

【讨论】:

  • 此查询仅在“s”字词在事件标题中但不按 event_channel 过滤时有效(请参阅相关图片)。有什么解决办法吗?
  • 我不知道您的 ACF 的确切结构。但是您可以尝试我现在​​添加到我的答案中的那个。检查一下
  • 嗨@Elvin - 它仍然不适合我。请参阅附件图片供您参考。很想听听您的更多选择。提前谢谢你
  • 你没有从 MySQL 附加任何东西,在这种情况下是必需的
  • 嗨@Elvin - 在数据库中只有“meta_key”作为 event_channel 和“meta_value”作为该 event_channel 的 ID,如所讨论的 JSON 格式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 2017-08-26
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 2018-02-04
相关资源
最近更新 更多