2015-06-29 2 views
0

У меня есть текстовый комментарий Wordpress с 2 пользовательскими файлами, именем и страной, которые записываются в базу данных с тегом meta_key как comment_name и comment_country. Мне нужно показать эти комментарии, которые должны включать фактический комментарий, а также значения 2 настраиваемых полей. Мне нужно запросить базу данных, поскольку мне нужно получить ВСЕ комментарии, а не только комментарии для этой конкретной страницы.Запросить базу данных с комментарием meta

Код I (вид) есть это:

<?php 
global $wpdb; 
$querystr = " SELECT comment_content FROM $wpdb->comments INNER JOIN $wpdb->commentmeta ON meta_key = 'comment_name'"; 
$comment_info = $wpdb->get_results($querystr, OBJECT); 
echo '<ul>'; 
// display the results 
foreach($comment_info as $info) { 
echo '<li class="commentBox"><p>'. $info->comment_content .'</p><h6>'. $info->meta_value .'</h6></li>'; 
} 
echo '</ul>';        
?> 

Как вы можете видеть, мне нужно, чтобы получить comment_content поле, которое находится в wp_comments, но и объединить, что с . Я, очевидно, не понял, как попытаться добавить второй код meta_key/в мой код.

Может кто-нибудь мне помочь, так как я нахожусь в этом с ума!

UPDATE: Теперь я могу запросить информацию, которая мне нужна. Мне пришлось использовать псевдонимы, поэтому я могу запросить 2 разных meta_keys с соответствующими значениями. Код:

$querystr = 
" SELECT * FROM $wpdb->comments, $wpdb->commentmeta AS commentmeta1, $wpdb->commentmeta AS commentmeta2 
WHERE $wpdb->comments.comment_ID = commentmeta1.comment_id 
AND $wpdb->comments.comment_ID = commentmeta2.comment_id 
AND commentmeta1.meta_key = 'comment_name' 
AND commentmeta2.meta_key = 'comment_country' 
ORDER BY $wpdb->comments.comment_date DESC"; 

$comment_info = $wpdb->get_results($querystr, OBJECT); 

Так что я теперь нужно сделать, это ссылка commentmeta1 и commentmeta2 в моем цикле для вывода 2 разных значений. Код, я использую:

echo '<ul>'; 
// display the results 
foreach($comment_info as $info) { 
echo '<li class="commentBox"><p>' . $info->comment_content . '</p><h6>' . $info->meta_value['commentmeta1'] . ', ' . $info->meta_value['commentmeta2'] . '</h6></li>'; 
} 
echo '</ul>'; 

Мета значения не выводятся, как следует, он в основном занимает первое письмо только моего commentmeta2 («comment_country»), и дублирует его для каждого экземпляра (рис ниже) , Если я запрашиваю только один мета-ключ, я могу отобразить значение в моем цикле, просто выполнив $info->meta_value. Как я могу просто использовать meta_values ​​в соответствии с моим запросом?

Img of current output

ответ

0

Sussed it! Окончательный рабочий код выглядит следующим образом:

$querystr = " SELECT comment_content, commentmeta1.meta_value AS comment_name, commentmeta2.meta_value AS comment_country 
FROM $wpdb->comments, $wpdb->commentmeta AS commentmeta1, $wpdb->commentmeta AS commentmeta2 
WHERE $wpdb->comments.comment_ID = commentmeta1.comment_id 
AND $wpdb->comments.comment_ID = commentmeta2.comment_id 
AND commentmeta1.meta_key = 'comment_name' 
AND commentmeta2.meta_key = 'comment_country' ORDER BY $wpdb->comments.comment_date DESC"; 

$comment_info = $wpdb->get_results($querystr, OBJECT); 

echo '<ul>'; 
// display the results 
foreach($comment_info as $info) { 
echo '<li class="commentBox"><p>' . $info->comment_content . '</p> 
<h6>' . $info->comment_name . ', ' . $info->comment_country . '</h6></li>'; 
} 

echo '</ul>'; 

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

0

Как насчет указания столбцов, нужно в вашем SELECT заявлении:

SELECT comment_content, comment_name, comment_country FROM ... 

Затем ссылаться на них в вашем HTML, как $info->comment_name и так далее.

Если вам нужно больше направлений, вам нужно разделить схемы базы данных для таблиц комментариев.

+0

Спасибо, что ответили Маркусом. Я сделал то, что вы предложили, и с ботом дополнительных исследований я добился определенного прогресса. Я отредактировал мой вопрос с тем, что я сделал, и препятствием, с которым я сталкиваюсь сейчас! – user1391152

+0

Wordpress базы данных, um, интересно сказать. У меня нет установки, удобной для проверки прямо сейчас, но я знаю, что они очень любят структуры, которые создают сложные запросы, такие как перечисление каждого мета-поля для отдельной записи в отдельной строке, а также «реальная имя поля "для каждого сохраненного в общем поле" meta_key_name "или так. Это может сделать вещи настраиваемыми без изменения табличных структур, но человек, это боль в звездочке для работы. Не заставляйте меня начинать с их таксономии; для laffs, проверьте это: https: // twitter.com/CodeSatori/status/504775322923847681 –