2010-11-24 11 views
0

Я работаю над темой, которая позволяет зарегистрированным пользователям публиковать сообщения в блоге Wordpress, я создал форму (название, категорию, запись).

Вопрос в том, как я могу добавить новую галочку «Уведомить меня, когда будет опубликован новый ответ»? Мне нужна функция, а не плагин.

Вот функция, которая обрабатывает вопрос проводки:

функция 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 функции было бы здорово.

ответ

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; 

И это работает как шарм. Может быть, кто-то найдет это полезным. Спасибо дирк за вашу помощь.

0

Сначала вам нужно взять поле post_author из базы данных для этого сообщения. Просмотрите запись базы данных для этого автора/пользователя, вытащите электронную почту из этой записи и отправьте электронное письмо с уведомлением о новом ответе на этот адрес электронной почты. Функция WordPress get_userdata принимает идентификатор пользователя (из поля 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)); 

Это будет захватывать автора текущего сообщения и отправлять их по электронной почте с темой «Новый Ответ на сообщение: [Название] Post» и тело сообщения, являющимся URI на пост.

+0

Спасибо, но как проверить, проверен ли пользователь, хочет ли он или не получать уведомления? И где он ищет новый ответ на эту конкретную должность? – 2010-11-24 16:46:36

 Смежные вопросы

  • Нет связанных вопросов^_^