我试图查询按帖子类型、分类法类型和术语筛选的帖子,并将它们显示为按发布月份分组的帖子数量。我有一段代码可以很好地做到这一点,只要标题中没有空格,slug中没有破折号。为什么会这样?我尝试使用esc_sql(\'term-slug\')
, \'term\\-slug\'
, 和escape(\'term-slug\')
没有成功。
我的代码:
$posts_per_month = $wpdb->get_results(
"SELECT DATE_FORMAT(post_date, \'%Y-%m\') AS month, COUNT(ID) AS count
FROM $wpdb->posts AS wposts
LEFT JOIN $wpdb->term_relationships AS tax_rel ON (wposts.ID = tax_rel.object_id)
LEFT JOIN $wpdb->term_taxonomy AS term_tax ON (tax_rel.term_taxonomy_id = term_tax.term_taxonomy_id)
LEFT JOIN $wpdb->terms AS terms ON (terms.term_id = term_tax.term_id)
WHERE post_status = \'publish\'" . $post_type_query .
"AND terms.name = \'shorelineorwaterway\'
AND term_tax.taxonomy = \'cleanup_type\'
GROUP BY month",
OBJECT_K
);
如果我删除术语标题中的空格和术语slug中的破折号,那么效果会很好。如果我尝试在slug中不使用破折号,在title中不使用空格,则返回一个空数组。类似地,如果我尝试在slug中使用破折号,而标题中没有空格,则不会起作用。
这有什么明显的原因吗?
最合适的回答,由SO网友:CodeMascot 整理而成
在您使用的代码中"AND terms.name = \'shorelineorwaterway\'
我不认为shorelineorwaterway
是你的术语名称,可能是你的术语slug。因此,您可以通过"AND terms.slug = \'shorelineorwaterway\'
在这里,在倒逗号内,可以使用连字符。
如果需要使用术语名称"AND terms.name = \'Your Term Name\'
会有用的。
我已经测试了以上两项。
希望我已经澄清了我的想法。