我正在使用以下代码将自定义帖子类型成员(带有自定义字段)导出到CSV文件。成员列表包括不属于特定成员类型“成员”且值为0或1的用户。我想过滤列表以仅导出“成员”等于1,但无法弄清楚如何修改语句以下是这样做的。
global $wpdb;
$sql = $wpdb->get_results( "SELECT *
FROM wp_posts (
SELECT
#`wp_posts`.`ID`,
MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'first_name'
THEN `wp_postmeta`.`meta_value`
END ) AS `First Name`,
MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'last_name'
THEN `wp_postmeta`.`meta_value`
END ) AS `Last Name`,
MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'phone_number'
THEN `wp_postmeta`.`meta_value`
END ) AS `Phone Number`,
MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'email_address'
THEN `wp_postmeta`.`meta_value`
END ) AS `Email Address`,
MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'member'
THEN `wp_postmeta`.`meta_value`
END ) AS `Member`
FROM `wp_posts`
LEFT JOIN `wp_postmeta` ON ( `wp_posts`.`ID` = `wp_postmeta`.`post_id` )
WHERE `wp_posts`.`post_status` = 'publish'
AND `wp_posts`.`post_type` = 'member'
GROUP BY `wp_posts`.`ID`
ORDER BY `wp_posts`.`post_title` ASC
) AS `t` WHERE 1 =1
");
答案 0 :(得分:0)
您是否尝试添加
HAVING MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'member'
THEN `wp_postmeta`.`meta_value`else 0
END ) = 1
之后
GROUP BY
很难告诉wp_posts表的结构但是我假设它的每个post属性都有一行,其中meta_key =属性名称和mety_value = value