所以我有一个名为ads的CPT,它的ACF字段为ad\\u start\\u date和ad\\u end\\u date。我正在尝试使用SELECT语句编写自定义WP查询,而不是使用WP\\U查询,因为我返回了一个ajax请求,所以我需要准确地选择要发送的字段。
因此,对于一个测试,我确实使用了WP\\u查询方法,它工作得非常好。但是为了获得acf字段,或者说是特征图像,这个WP查询方法需要在一个模板php文件上。我需要一个自定义SELECT语句,以便在一个json响应中选择需要发送到JavaScript端的字段
仅供参考,此函数从以前的AJAX请求响应中检索ID数组,因此您可以看到“post\\u in”参数。但同样,下面的函数工作得很好,但无法使用它,因为来自WP\\u查询的响应是有限的,需要WP循环或post ID才能传递到ACF
get_field(\'ad_start_date\', post->ID)
功能。我需要这个查询来获取这个查询调用上的所有内容,并作为json响应发回。
function get_ads() {
$id = $_POST[\'ids\'];
$integerIDs = json_decode( $id, true);
$todays_date = date(\'Ymd\', strtotime("now"));
$newargs = array(
\'numberposts\' => -1,
\'post_type\' => \'ads\',
\'post__in\' => $integerIDs,
\'post_status\' => \'publish\',
\'meta_query\' => array(
array(
\'key\' => \'ad_start_date\',
\'compare\' => \'<\',
\'type\' => \'numeric\',
\'value\' => $todays_date,
),
array(
\'key\' => \'ad_end_date\',
\'value\' => $todays_date,
\'compare\' => \'>\',
\'type\' => \'numeric\',
),
),
);
$the_final_query = new WP_Query( $newargs );
echo json_encode($the_final_query);
wp_die();
}
下面是我在mysql workbench中使用自定义mysql语句获取此数据的尝试。但我没有取得任何成功。有人知道我的问题在哪里吗?
SELECT * FROM wp_posts
INNER JOIN wp_postmeta ON wp_postmeta.post_id = wp_posts.ID
AND( wp_postmeta.meta_key = \'ad_start_date\' AND wp_postmeta.meta_value <
20190620)
AND ( wp_postmeta.meta_key = \'ad_end_date\' AND wp_postmeta.meta_value >
20190620)
WHERE wp_posts.post_type = \'ads\'
AND wp_posts.post_status = \'publish\'
第二次尝试强制转换为数字,因为meta\\u值是longtext数据类型
SELECT * FROM wp_posts
INNER JOIN wp_postmeta ON wp_postmeta.post_id = wp_posts.ID
AND( wp_postmeta.meta_key = \'ad_start_date\' AND (CAST(wp_postmeta.meta_value
AS
UNSIGNED) < 20190620) )
AND ( wp_postmeta.meta_key = \'ad_end_date\' AND (CAST(wp_postmeta.meta_value
AS
UNSIGNED) > 20190620) )
WHERE wp_posts.post_type = \'ads\'
AND wp_posts.post_status = \'publish\'
任何帮助都将不胜感激!