自定义WordPress评论帖子查询
我想在WordPress安装中扩展评论的功能。我读到一个难以捉摸的“自定义评论类型”功能,但无法找到任何信息。相反,我在想,我会添加一个自定义列到'评论'数据库表。这是很容易的部分。我不知道如何做的是定制评论查询以保存,更新和阅读评论以反映新表格列的存在。我认为会有一个过滤器来改变查询,但我找不到任何可以做到的事情......任何想法?自定义WordPress评论帖子查询
是不是真的有一个自定义的注释类型,但是你可以很容易和有效地使用添加“评论荟萃”这是每个名称/值对与给定评论相关关联的名称/值对的表列使用'meta_key'
(请不要添加到SQL数据库中的列;这是在WordPress开发者社区所不齿。)
让我们假设你想让用户添加自己的Twitter帐户。这是将我的Twitter帐户保存到(以下划线为元键名加前缀对于您通过自定义代码维护的任何元组以及您允许用户选择元密钥的好主意)的代码。
update_comment_meta($comment_ID,'_twitter','mikeschinkel');
然后加载在你的模板来显示你只需要调用get_comment_meta()
(第三个参数是指返回一个值,而不是值的数组)的值:
$twitter = get_comment_meta($comment_ID,'_twitter',true);
中课程无线不知道如何挂钩WordPress来整合这些功能并不会有太大的帮助。有两个钩子,你需要使用,首先是wp_insert_comment
将被调用时,WordPress的节省了评论:
add_action('wp_insert_comment','yoursite_wp_insert_comment',10,2);
function yoursite_wp_insert_comment($comment_ID,$commmentdata) {
$twitter = isset($_GET['twitter']) ? $_GET['twitter'] : false;
update_comment_meta($comment_ID,'_twitter',$twitter);
}
第二个是更复杂一点;可以让您添加字段并修改评论表单的其他方面。该'comment_form_defaults'
钩设置了注释的默认值,并让你添加HTML的一个Twitter场(我钩住从comment_form()
功能的HTML在WP V3.0.1在/wp-includes/comment-template.php
发现行1511格式)
add_filter('comment_form_defaults','yoursite_comment_form_defaults');
function yoursite_comment_form_defaults($defaults) {
$email = $defaults['fields']['email'];
$label = __('Twitter');
$value = isset($_GET['twitter']) ? $_GET['twitter'] : false;
$defaults['fields']['twitter'] =<<<HTML
<p class="comment-form-twitter">
<label for="twitter">{$label}</label>
<input id="twitter" name="twitter" type="text" value="{$value}" size="30" />
</p>
HTML;
return $defaults;
}
这里就是它看起来像在行动:
这种评论表单可扩展为新的WordPress 3.0,以便通过在它可能不会accommodat一个开源项目是新的性质e所有使用案例(例如,没有简单的方法为Twitter的屏幕名称获得一个记住的值)但希望你能够将它弯曲到足以满足你的需求并在未来发布WordPress的评论表单API几乎肯定会有所改进。
希望这会有所帮助。
-Mike
P.S.今后考虑在*的姐妹网站WordPress Answers上发布您的问题;这就是大多数WordPress爱好者都在外面闲逛的地方,那些能够快速回答这样的问题的人。
真是一个伟大的和完整的答案!非常感谢!我将来肯定会去找Wordpress Answers。再次感谢!! – 2010-11-01 12:55:03
@Regis Zaleman - 非常欢迎您! – MikeSchinkel 2010-11-01 21:20:52
@MikeSchinkel - 首先,你的答案是完美的,我只想问,是否有可能向参观者展示这个元值?我的意思是让用户进入他们的年龄,并让我在他/她的评论中显示评论者的年龄。谢谢。 – Alper 2011-02-20 23:10:04