Php 用于选择发布多个分类法的自定义wpdb查询

Php 用于选择发布多个分类法的自定义wpdb查询,php,woocommerce,wordpress,custom-taxonomy,Php,Woocommerce,Wordpress,Custom Taxonomy,我正在尝试为wordpress编写一个自定义的select post查询。我正在使用woocommerce。在woocommerce中,默认的post类型名称为“product”,分类名称为“product_cat” 我为产品规范添加了另一个分类名称“spec” 所以在我的产品类别中,假设“三星”,“笔记本电脑”是产品类别的术语名称。在“规范”中,我有一些规范,如“核心i5处理器”、“8gbddr3ram”等,我的帖子标题是“超级笔记本” 我想搜索这个字段,就像在我的搜索字段中键入noteboo

我正在尝试为wordpress编写一个自定义的select post查询。我正在使用woocommerce。在woocommerce中,默认的post类型名称为“product”,分类名称为“product_cat” 我为产品规范添加了另一个分类名称“spec”

所以在我的产品类别中,假设“三星”,“笔记本电脑”是产品类别的术语名称。在“规范”中,我有一些规范,如“核心i5处理器”、“8gbddr3ram”等,我的帖子标题是“超级笔记本”

我想搜索这个字段,就像在我的搜索字段中键入notebook一样,它将显示所有notebook。在搜索输入类型文本区域下方,我还有一个选择框,其中包含所有“product_cat”,如三星、惠普、苹果、笔记本电脑等

产品标题/帖子标题

  • 超级笔记本
产品目录

  • 三星
  • 笔记本电脑
规格

  • 核心i5处理器
  • 8gb ddr3内存

    全球$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);

我知道,但我有点依赖。因为三星是预定义的,从前端固定的,它应该是。我在这个问题上犯了一个错误。(和wp_terms.name='samsung')。我还需要一个与元键值meta_key=''u price'的and关系,以及介于'1'和'10'之间的meta_值。有没有更好的wp查询?如果你有任何给我的链接,谢谢。费萨尔