前面讲过使用WordPress自定义文章类型实现问答效果,最近在复制某站的问答功能时遇到一个问题,自定义文章类型的评论输出异常,由于 wp_list_comment
函数中无法筛选 post_type
参数,所以直接使用它是取不到自定义文章类型的文章评论数据的,解决办法有两种,要么数据库查表,要么使用wordpress的模板搭配 wp_list_comment 函数解决。
查表方式
由于评论数据都在 wp_comments
这张数据表中,所以简单的mysql语句就能取得我没想要的数据,但是,评论是分级的,在使用这种方式输出评论时就需要大家的逻辑足够清晰。下面举个例子,简单查询文章所以评论数据的MySQL语句如下:
复制
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = $post->ID AND comment_type = '' AND comment_approved = '1' );
这种方式不适合我这种懒人,于是我找到了另外的一种方式。
利用模板文件
首先创建一个名为 question_answer_comments.php
的评论模板文件,然后使用 comments_template('/question_answer_comments.php', true);
函数引用它,这时评论模板文件中就可以正常使用wp_list_comments
函数获取评论数据了。建议配合使用 Walker_Comment
类控制评论输出的样式,简单好用!
如果查阅一下源码应该能发现是哪里出了问题,但是我比较懒,而且这样还能让程序结构更清晰,所以就这样吧,不找原因了,程序跑起来了,就不要动它!
评论 (0)