我有一个wordpress评论框,其中包含2个自定义文件,名称和国家/地区,这些文件使用meta_key
标记comment_name
和comment_country
写入数据库。我需要做的是显示这些评论,这些评论需要包括实际评论,以及2个自定义字段的值。我需要查询数据库,因为我需要检索所有注释,而不仅仅是对该特定页面的注释。
代码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
字段,但也要将其与2 meta_value
的{{1}}相结合。我显然还没想出如何尝试将第二个meta_keys
/值添加到我的代码中。
任何人都可以帮助我,因为我的智慧结束了!
更新 我现在可以查询我需要的信息。我不得不使用别名,所以我可以使用相应的值查询2个不同的meta_keys。代码:
meta_key
所以我现在需要做的是在循环中引用$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
来输出2个不同的值。我正在使用的代码:
commentmeta2
元值不会按原样输出,它基本上仅取我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>';
('comment_country')的第一个字母,并为每个实例复制它(下图)。如果我只查询一个元键,我可以通过简单地运行commentmeta2
来显示我的循环中的值。我如何根据我的查询简单地使用meta_values?
答案 0 :(得分:0)
如何在SELECT
声明中指定所需的列:
SELECT comment_content, comment_name, comment_country FROM ...
然后在您的HTML中引用它们$info->comment_name
,依此类推。
如果您需要更多指导,则需要共享评论表的数据库模式。
答案 1 :(得分:0)
怀疑它!最终工作代码如下:
$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
并分配一个新的别名,我可以在循环中引用它。