#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. он близок, но мне нужно было использовать его в запросе комментария, который я разместил первым .. любые способы спасибо