Php 显示特定自定义帖子类型的所有帖子及其帖子元
有人能帮我显示特定自定义帖子类型的所有帖子和邮戳吗 我在wordpress项目中创建了一个自定义帖子类型“Course”,带有一些自定义元框 我需要显示该自定义帖子类型的所有帖子和自定义元框值 我试过下面的问题Php 显示特定自定义帖子类型的所有帖子及其帖子元,php,mysql,wordpress,Php,Mysql,Wordpress,有人能帮我显示特定自定义帖子类型的所有帖子和邮戳吗 我在wordpress项目中创建了一个自定义帖子类型“Course”,带有一些自定义元框 我需要显示该自定义帖子类型的所有帖子和自定义元框值 我试过下面的问题 $query = " SELECT $wpdb->posts.ID,$wpdb->posts.post_title,$wpdb->postmeta.meta_key FROM $wpdb->posts LEFT JOIN $wpdb->postmeta
$query = "
SELECT $wpdb->posts.ID,$wpdb->posts.post_title,$wpdb->postmeta.meta_key
FROM $wpdb->posts
LEFT JOIN $wpdb->postmeta ON ( $wpdb->posts.ID = $wpdb->postmeta.post_id)
WHERE
$wpdb->postmeta.meta_key IN ('_course_code','_instructor_name')
AND
$wpdb->posts.post_type = 'course'
";
$results = $wpdb->get_results($query);
echo "<pre>";
print_r($results);
但我希望结果也一样
$posts = $wpdb->posts;
$postmeta = $wpdb->postmeta;
$query = "SELECT $posts.ID, $posts.post_title, $postmeta.meta_key
FROM $posts
LEFT JOIN $postmeta ON ( $posts.ID = $postmeta.post_id)
WHERE
$postmeta.meta_key IN ('_course_code','_instructor_name')
AND $posts.post_type = 'course'
GROUP BY $posts.ID";
$results = $wpdb->get_results($query);
echo "<pre>";
print_r($results);
echo "</pre>";
首先,不要做$wpdb->post,因为很难阅读。其次,sql查询部分缺少分组
$query = "
SELECT $wpdb->posts.ID,$wpdb->posts.post_title,
PM1.meta_value as _course_code,
PM2.meta_value as _instructor_name
FROM $wpdb->posts
LEFT JOIN $wpdb->postmeta AS PM1 ON ( $wpdb->posts.ID = PM1.post_id AND PM1.meta_key = '_course_code')
LEFT JOIN $wpdb->postmeta AS PM2 ON ( $wpdb->posts.ID = PM2.post_id AND PM2.meta_key = '_instructor_name')
WHERE $wpdb->posts.post_type = 'course'
AND $wpdb->posts.post_status = 'publish'
AND ((PM1.meta_key = '_course_code') AND (PM2.meta_key='_instructor_name'))
GROUP BY $wpdb->posts.ID
ORDER BY $wpdb->posts.post_date DESC
";
$results = $wpdb->get_results($query);
echo "<pre>"; print_r($results); die("here");
我自己设法得到了结果,把我的答案放在这里,希望它能帮助别人
考虑在没有任何聚合函数的情况下,提供与您期望的结果相对应的适当DDL,一个GROUPBY子句可能是一个错误。另外,需要注意的是,这呈现为一个内部join,我已经使用了groupby,但是它只提供了post meta中的一个meta_键“\u course_code”,其他的都丢失了。如果您需要查看唯一的值,如meta_键,请通过逗号分隔向group添加额外内容:group by$posts.ID、$postmeta.meta_键
$posts = $wpdb->posts;
$postmeta = $wpdb->postmeta;
$query = "SELECT $posts.ID, $posts.post_title, $postmeta.meta_key
FROM $posts
LEFT JOIN $postmeta ON ( $posts.ID = $postmeta.post_id)
WHERE
$postmeta.meta_key IN ('_course_code','_instructor_name')
AND $posts.post_type = 'course'
GROUP BY $posts.ID";
$results = $wpdb->get_results($query);
echo "<pre>";
print_r($results);
echo "</pre>";
$query = "
SELECT $wpdb->posts.ID,$wpdb->posts.post_title,
PM1.meta_value as _course_code,
PM2.meta_value as _instructor_name
FROM $wpdb->posts
LEFT JOIN $wpdb->postmeta AS PM1 ON ( $wpdb->posts.ID = PM1.post_id AND PM1.meta_key = '_course_code')
LEFT JOIN $wpdb->postmeta AS PM2 ON ( $wpdb->posts.ID = PM2.post_id AND PM2.meta_key = '_instructor_name')
WHERE $wpdb->posts.post_type = 'course'
AND $wpdb->posts.post_status = 'publish'
AND ((PM1.meta_key = '_course_code') AND (PM2.meta_key='_instructor_name'))
GROUP BY $wpdb->posts.ID
ORDER BY $wpdb->posts.post_date DESC
";
$results = $wpdb->get_results($query);
echo "<pre>"; print_r($results); die("here");