【发布时间】:2016-01-14 14:25:56
【问题描述】:
我必须编辑某人的代码,但我不熟悉使用他们的方法查询帖子。我尝试将查询编辑为各种替代方案,但是我没有运气。我想更改以下查询以从名为“job_cat”的自定义分类法中选择数据,其中值等于 POST 值。代码如下:
$querystr = "
SELECT DISTINCT wposts.*
FROM $wpdb->posts wposts
LEFT JOIN $wpdb->postmeta wpostmeta ON wposts.ID = wpostmeta.post_id
LEFT JOIN $wpdb->postmeta wpostmeta2 ON wposts.ID = wpostmeta2.post_id
LEFT JOIN $wpdb->term_relationships ON (wposts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE wp_term_taxonomy.term_id = 94";
// If a job type is set and not equal to nothing or any jobs
if(isset($_POST['search-location']) && $_POST['search-location'] !== "" && $_POST['search-location'] !== "All") {
$querystr .= " AND (wpostmeta2.meta_key = 'region' AND wpostmeta2.meta_value = '".$_POST['search-location']."')";
}
$querystr .= " ORDER BY post_date DESC LIMIT 50";
//Execute
//echo $querystr;
$pageposts = $wpdb->get_results($wpdb->prepare($querystr, OBJECT));
任何帮助都会很棒!
【问题讨论】:
-
警告: 您的代码容易受到 SQL 注入攻击!阅读 Bobby Tables 的故事了解更多信息。
-
我想你使用自定义查询,而不是 WP_Query 类。您能确认
wpostmeta是您的表的名称吗? -
查询字符串的其余部分在哪里?您在
AND之前没有分享过该部分。 -
@mevius 我已经添加了其余的代码,谢谢!
-
这是 100% 错误的——不要在你的 PHP 中做 SQL 的事情。您需要使用 WP 功能。