Пользовательский запрос wpdb для выбора публикации более чем одной таксономии

Я пытаюсь написать собственный запрос выбора сообщения для wordpress. Я использую woocommerce. В woocommerce имя типа сообщения по умолчанию - «product», а имя таксономии в «product_cat». Я добавил еще одно название таксономии «spec» для спецификации продукта.

Итак, в моей категории продуктов предположим, что «samsung», «ноутбук» - это термин, обозначающий категорию продукта. и в "spec" у меня есть некоторые спецификации, такие как "процессор core i5", "8gb ddr3 ram" и т. д., и мой заголовок поста - "super notebook"

Я хочу найти его по любому из этого поля, например, если ввести ноутбук в поле поиска, он покажет все записные книжки. Под текстовой областью типа ввода поиска у меня также есть поле выбора, в котором есть все «product_cat», такие как samsung, hp, apple, laptop и т. Д.

Название продукта / Заголовок сообщения

  • Супер ноутбук

product_cat

  • Samsung
  • ноутбук

спецификация

  • процессор core i5
  • Оперативная память ddr3 8 гб

    глобальный $ 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);

Я понятия не имею, как это исправить. Итак, кто-нибудь хочет мне помочь, пожалуйста, дайте мне этот ответ. Спасибо.


person Faysal Haque    schedule 17.09.2014    source источник


Ответы (1)


Вы можете попробовать это

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);
person deemi-D-nadeem    schedule 18.09.2014
comment
Я знаю ИЛИ, но здесь у меня есть некоторая зависимость. Потому что samsung предопределен и исправлен из интерфейса, и это должно быть. Я ошибся в вопросе. (И wp_terms.name = 'samsung'). и мне также нужно отношение И к значению мета-ключа meta_key = '_price' И meta_value МЕЖДУ '1' И '10'. Есть ли лучший запрос WP? Если у вас есть, дайте мне ссылку Спасибо. Faysal - person Faysal Haque; 19.09.2014