инструкция sql для запроса сообщений wp из определенной категории

#php #mysql #sql #wordpress

#php #mysql #sql #wordpress

Вопрос:

я хочу запросить сообщения wordpress из определенной родительской категории, но проблема в том, что в таблице wp_posts нет такого столбца, поэтому мне нужно присоединиться, но мои навыки в sql не очень хороши, поэтому мне нужна помощь, вот запрос, который я использую для запроса сообщений

     $query = "SELECT c.* 
        FROM {$wpdb->prefix}posts p,
         {$wpdb->prefix}comments c WHERE p.ID = c.comment_post_ID AND c.comment_approved > 0 AND p.post_type = 'product' AND p.post_status = 'publish' AND
          p.comment_count > 0 ORDER BY ".$order_by." LIMIT 0, ". $number_of_comments;

    }
  

и вот некоторый фрагмент, который я нашел для присоединения к term_taxonomy_id

 $answer = $wpdb->get_results("SELECT post_title, post_content, term_taxonomy_id FROM wp_posts LEFT JOIN wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_id WHERE SUBSTRING(post_title,1,1)='T' AND term_taxonomy_id=6");
  

проблема я не могу понять, как использовать этот пример в моем запросе, не думая о более простых решениях, чтобы я мог запрашивать из определенной родительской категории, спасибо за вашу помощь

Комментарии:

1. является ли это вне установки wp или вы собираетесь использовать его в wp?

2. внутри wordpress (плагин)

3. почему бы вам не использовать собственные методы wordpress. codex.wordpress.org/Function_Reference /…

4. потому что это плагин coustom, запрашивающий сообщения и комментарии к нему, чтобы показать последние обзоры, и я буду редактировать так много вещей таким образом .. спасибо

Ответ №1:

вот запрос, который я использовал и работал..

 $query = "SELECT  c.*
        FROM
         {$wpdb->prefix}comments c ,
         {$wpdb->prefix}posts p JOIN   $wpdb->term_relationships TR 
        ON p.ID=TR.object_id 
 JOIN   $wpdb->term_taxonomy T 
        ON TR.term_taxonomy_id=T.term_taxonomy_id
 JOIN   $wpdb->terms TS 
        ON T.term_id = TS.term_id
        WHERE p.ID = c.comment_post_ID   AND c.comment_approved > 0 AND p.post_type = 'product' AND p.post_status = 'publish' AND
          p.comment_count > 0 AND  T.taxonomy = 'product_cat' AND T.term_id='$term_cat'   ORDER BY ".$order_by." LIMIT 0, ". $number_of_comments;
     }
  

Ответ №2:

вы бы смотрели на что-то вроде этого:

 global $wpdb;
$wpdb->show_errors();
$ur=$wpdb->get_results( $wpdb->prepare( 
    "
     SELECT *
     FROM $wpdb->posts P 
     JOIN   $wpdb->term_relationships TR 
            ON P.ID=TR.object_id // identify link column
     JOIN   $wpdb->term_taxonomy T 
            ON TR.term_taxonomy_id=T.term_taxonomy_id
     JOIN   $wpdb->terms TS 
            ON T.term_id = TS.term_id
     WHERE  P.post_type = %d // use wild chars (define below, this one equals carmarket)
            AND P.post_status = %f
            AND T.taxonomy= %s

    ",
        'carmarket', 
        'publish',
        'carmake'

) ); 

$wpdb->print_error();
var_dump($ur);
  

Комментарии:

1. он близок, но мне нужно было использовать его в запросе комментария, который я разместил первым .. любые способы спасибо