评论有动作挂钩吗?

时间:2010-12-23 作者:wpStudent

这是一个我正在尝试制作的个人使用插件。我想从站点a向我的博客提交一条评论(有点像发送trackback/pingback,但只是一条完整的评论)。

例如,在站点A上,我有一个带有名称、url和注释字段的表单。我在站点A中输入的数据,我想通过URL参数或POST方法提交到站点B(我的博客)。

我假设我的博客上需要一个操作挂钩来检索从站点A发送的数据,并将其插入wp注释表中。

这可能吗?

2 个回复
最合适的回答,由SO网友:MikeSchinkel 整理而成

在WordPress中,几乎任何事情都是可能的。这完全取决于你有时想为此付出多大努力。:)

当然,评论帖子表单使用HTTP帖子提交到/wp-comments-post.php 所以你可以用它,除了NONCEs 如果要发布未过滤的HTML。您必须编写一个页面,为您提供一个可接受的NONCE,该NONCE站点a需要HTTP才能提交回评论帖子表单,但我认为,如果您不介意使用过滤器,它应该可以正常工作。

另一种选择是使用函数designed for AJAX 但让它从表单中捕获您的HTTP帖子,然后通过调用wp_insert_comment(). 或者您可以在站点B上使用AJAX与站点A对话。当然,这样做会打开一个安全漏洞,但如果您的代码没有分发,您可以决定这是否会造成真正的问题。

(通常我会写一个例子,但今天没时间了。希望上面的内容能给你指明正确的方向。)

SO网友:wpStudent

好的,我举一个例子。我希望它能起作用:)

Passing data from site A to site B (the blog):

在站点A上,我想我会使用POST方法,将数据发送到站点B。我不想在url中传递参数。

在现场B,我会

$name = $_POST[\'name\'];
$email = $_POST[\'email\'];
$url = $_POST[\'url\'];
$content = $_POST[\'content\'];
$time = current_time(\'mysql\');

$data = array(
    \'comment_author\' => $name,
    \'comment_author_email\' => $email,
    \'comment_author_url\' => $url,
    \'comment_content\' => $content,
    \'comment_date\' => $time,
    \'comment_approved\' => 1,
);

wp_insert_comment($data);

结束