我正在尝试为wordpress编写自定义选择查询。我正在使用woocommerce。在woocommerce中,默认帖子类型名称为“ product”,分类名称为“ product_cat”我为产品规格添加了另一个分类名称“ spec”。
因此,在我的产品类别中,假设“三星”,“笔记本电脑”是产品类别的术语名称。在“规格”中,我有一些规格,例如“核心i5处理器”,“ 8gb ddr3 ram”等,我的帖子标题是“超级笔记本”]
我想搜索该字段中的任何一个,例如,如果在我的搜索字段中键入笔记本,它将显示所有笔记本。在搜索输入类型文本区域的下方,我还有一个选择框,其中包含所有“ product_cat”,如三星,惠普,苹果,笔记本电脑等。
产品标题/文章标题
product_cat
spec
8gb ddr3 ram
全局$ wpdb;
$query = "SELECT DISTINCT wp_posts.*
FROM wp_posts, wp_term_relationships, wp_term_taxonomy, wp_terms
WHERE (wp_terms.name LIKE '%ddr3 ram%'
OR wp_posts.post_title LIKE '%ddr3 ram%')
AND wp_posts.post_status = 'publish'
AND wp_posts.post_type = 'product'
AND wp_posts.ID = wp_term_relationships.object_id
AND wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
AND wp_term_taxonomy.term_id = wp_terms.term_id GROUP BY wp_posts.ID ORDER BY wp_posts.post_title ASC";
$object = $wpdb->get_results($query);
_log($object);
我尝试使用此代码显示结果。
但是如果我尝试这样做,将不会显示结果
global $wpdb;
$query = "SELECT DISTINCT wp_posts.*
FROM wp_posts, wp_term_relationships, wp_term_taxonomy, wp_terms
WHERE (wp_terms.name LIKE '%ddr3 ram%'
AND wp_terms.name LIKE '%samsung%'
OR wp_posts.post_title LIKE '%ddr3 ram%')
AND wp_posts.post_status = 'publish'
AND wp_posts.post_type = 'product'
AND wp_posts.ID = wp_term_relationships.object_id
AND wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
AND wp_term_taxonomy.term_id = wp_terms.term_id GROUP BY wp_posts.ID ORDER BY wp_posts.post_title ASC";
$object = $wpdb->get_results($query);
_log($object);
我不知道要解决此问题。所以任何人想帮助我,请给我这个答案。谢谢。
您可以尝试这个
global $wpdb;
$query = "SELECT DISTINCT wp_posts.*
FROM wp_posts, wp_term_relationships, wp_term_taxonomy, wp_terms
WHERE (wp_terms.name LIKE '%ddr3 ram%'
OR wp_terms.name LIKE '%samsung%'
OR wp_posts.post_title LIKE '%ddr3 ram%')
AND wp_posts.post_status = 'publish'
AND wp_posts.post_type = 'product'
AND wp_posts.ID = wp_term_relationships.object_id
AND wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
AND wp_term_taxonomy.term_id = wp_terms.term_id GROUP BY wp_posts.ID ORDER BY wp_posts.post_title ASC";
$object = $wpdb->get_results($query);
_log($object);