1

我有一个koncerty带有自定义日期字段的自定义帖子类型datum,我目前正在使用此查询检索帖子(效果很好):

$date = date("Ymd");
$sql = <<<SQL
SELECT p.ID, p.post_content, p.post_title, datum.meta_value as datum, featured.meta_value as featured
FROM {$wpdb->posts} p
LEFT JOIN {$wpdb->postmeta} featured 
    ON featured.post_id = p.ID 
    AND featured.meta_key = 'featured'
LEFT JOIN {$wpdb->postmeta} datum 
    ON datum.post_id = p.ID 
    AND datum.meta_key = 'datum'
WHERE 
    p.post_type = 'koncert' 
    AND p.post_status = 'publish'
    AND datum.meta_value >= '$date'
  ORDER BY featured DESC, datum ASC, RAND()
LIMIT 3
SQL;

$posts = $wpdb->get_results( $sql ); 

我想datum使用 ACF 转发器字段插件使该字段可重复。我应该如何修改查询,以多次获取帖子?即,我将有一个包含三个日期的节目,并且需要像这样显示它

  • 1.1.2013 - 显示 1 - 信息
  • 2.1.2013 - 显示 1 - 信息
  • 3.1.2013 - 显示 1 - 信息

这里有一些教程:http: //www.advancedcustomfields.com/resources/tutorials/querying-the-database-for-repeater-sub-field-values/,但我有限的 sql 知识我不能把它一起。

谢谢

4

1 回答 1

1

我似乎让它工作了,这是查询:

SELECT p.ID, p.post_content, p.post_title, datum.meta_value as datum, datum.meta_key , featured.meta_value as featured
FROM wp_posts p
LEFT JOIN wp_postmeta featured 
    ON featured.post_id = p.ID 
    AND featured.meta_key = 'featured'
LEFT JOIN wp_postmeta datum 
    ON datum.post_id = p.ID 
    AND datum.meta_key LIKE  'datum2_%_datum_koncertu'
WHERE 
    p.post_type = 'koncert' 
    AND p.post_status = 'publish'
    AND datum.meta_value >= '$date'
  ORDER BY featured DESC, datum ASC, RAND()
LIMIT 3

我使用'datum2_%_datum_koncertu',因为 ACF 用于将数据保存到数据库的命名约定是$ParentName_$RowNumber_$ChildName(请参阅此处http://www.advancedcustomfields.com/resources/tutorials/querying-the-database-for-repeater-sub-field-values/)。

这样查询多次返回每个帖子,并显示日期,我只是使用<?php date("d.m.", strtotime($post->datum))?>

不确定,如果 wp_query 完全可以做到这一点。

于 2013-04-17T07:24:49.080 回答