У меня есть текстовый комментарий 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 в соответствии с моим запросом?
Спасибо, что ответили Маркусом. Я сделал то, что вы предложили, и с ботом дополнительных исследований я добился определенного прогресса. Я отредактировал мой вопрос с тем, что я сделал, и препятствием, с которым я сталкиваюсь сейчас! – user1391152
Wordpress базы данных, um, интересно сказать. У меня нет установки, удобной для проверки прямо сейчас, но я знаю, что они очень любят структуры, которые создают сложные запросы, такие как перечисление каждого мета-поля для отдельной записи в отдельной строке, а также «реальная имя поля "для каждого сохраненного в общем поле" meta_key_name "или так. Это может сделать вещи настраиваемыми без изменения табличных структур, но человек, это боль в звездочке для работы. Не заставляйте меня начинать с их таксономии; для laffs, проверьте это: https: // twitter.com/CodeSatori/status/504775322923847681 –