0

登録ユーザーが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 関数の使い方は素晴らしいでしょう。

4

2 に答える 2

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;

そして、それは魅力のように機能します。多分誰かがこれが便利だと思うでしょう。手伝ってくれてありがとう。

于 2010-11-24T21:13:22.840 に答える
0

post_authorまず、その投稿のデータベースからフィールドを取得する必要があります。その作成者/ユーザーのデータベース レコードを検索し、そのレコードから電子メールを取り出し、その電子メール アドレスに新しい回答の通知を含む電子メールを送信します。get_userdataWordPress 関数は (フィールドから) ユーザー 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 であるメールが送信されます。

于 2010-11-24T16:06:53.757 に答える