我的主题是允许注册用户在Wordpress博客上发帖,我创建了一个表单(标题,类别,条目)。
问题是,如何添加新复选框“发布新答案时通知我”?我需要一个函数,而不是一个插件。
以下是处理问题发布的功能:
function post_new_question($ question_title,$ question_content,$ question_category){
$question_title_stripped = strip_tags($question_title);
$question_content_stripped = strip_tags($question_content);
$user = wp_get_current_user();
global $wpdb;
$gather_questions = "SELECT * FROM wp_posts WHERE post_author = '" . $user->ID . "'";
$user_questions = $wpdb->get_results($gather_questions);
if (isEmptyString($question_title_stripped)) return new WP_Error('no_title_entered', 'Enter a title for your quesion');
if (isEmptyString($question_content_stripped)) return new WP_Error('no_content', 'Enter a breif description for your quesion');
foreach ($user_questions as $user_question) {
if ($user_question->post_author == $user->ID ) {
if ($user_question->post_title == $question_title_stripped) {
return new WP_Error('duplicate_user_question', 'You have already asked this exact question.');
} else {}
} else {}
}
$question_author = $user->ID;
$post = array(
'ID' => '',
'post_author' => $question_author,
'post_category' => array($question_category),
'post_content' => $question_content_stripped,
'post_title' => $question_title_stripped,
'post_status' => 'publish'
);
$question_id = wp_insert_post($post); }
PS:使用wp_email函数会很棒。
答案 0 :(得分:1)
好的,我们走了:
在用户添加帖子的表单中,我添加了
<input class="checkbox" type="checkbox" value="yes" name="notify" checked="checked" />
然后在标题
中$notify = $_POST['notify'];
现在,在处理表单的函数中,将帖子插入到wpdb
中if ($notify) {
$wpdb->insert('wp_notify', array('user_id' => $question_author, 'post_id' => $question->ID), array( '%d', '%d' ) );
}
最后一件事,对于处理评论的函数,在添加评论之后:
$notify = $wpdb->get_col("SELECT user_id FROM wp_notify WHERE user_id = {$wp_query->post->post_author} AND post_id = {$wp_query->post->ID}");
foreach ($notify as $user) :
if($user == $wp_query->post->post_author && $user != $user_ID) {
wp_mail('email', 'New Answer on Post: asdasdasdas', 'google.ro');
}
endforeach;
它就像一个魅力。也许有人觉得这很有用。 感谢 dirk 的帮助。
答案 1 :(得分:0)
首先,您需要从该帖子的数据库中获取post_author
字段。查找该作者/用户的数据库记录,从该记录中提取电子邮件,然后发送一封电子邮件,其中包含该电子邮件地址的新答案通知。 get_userdata
WordPress函数将获取用户ID(来自post_author
字段)并返回包含用户信息的对象,包括其电子邮件地址。
global $post;
$user = get_userdata($post->post_author);
wp_mail($user->user_email, 'New Answer on Post: '.$post->post_title, get_permalink($post->ID));
这将抓住当前帖子的作者并向他们发送一封电子邮件,主题为“帖子上的新答案:[帖子名称]”,邮件正文是帖子的URI。