web-dev-qa-db-ja.com

ユーザー登録時に投稿を作成する

どのように私はユーザーが登録を終えた後に3つの投稿を言うように作成することができますか?

理想的な結果は、投稿の作成者としてユーザーを使用し、いくつかの定義済みの値を使用して3つの投稿を作成することです。 (役職とスラグ)

投稿のタイトルとスラッグは、ユーザーが登録フォームで提供する情報から作成されます。

例:

ユーザーは、名前、姓、電子メールを登録して提供します(すべてのフィールドは必須です)。3つの投稿が作成され、ユーザーは各投稿の作成者になります。各投稿は登録フォームからタイトルとスラグ情報に含まれます。

  • 1- Jon Doe Bio |ジョンドゥバイオ
  • 2- Jon DoeポートフォリオJon-doe-portfolio
  • 3- Jon Doeジョンドゥーコンタクト

*上の例では、スラッグを編集する機能は必要ないように思われますが、in、is、at、などの単語を含む投稿がある場合は削除されます。また、「定義済みの値は、Bio、Portfolio、およびContactになります。

インストール後にwordpressによって作成された "welcome"投稿に近くなります。

どのように考えますか?

私はwp_insert_post( $my_post );そしておそらくadd_action('user_register', 'some_function');を使う必要があることを知っていますが、wp_insert_post( $my_post );を使ってワンショットで3つの投稿を作成する方法と、ユーザーが登録プロセスを終了した後にそれを引き起こす方法を知りません。

どのようにこれを達成するための任意のアイデア?前もって感謝します。

5
user983248

あなたはそのような質問にすでに自分で答えました、

Ex 3投稿を作成する関数を作成します。

function create_new_user_posts($user_id){
        if (!$user_id>0)
                return;
        //here we know the user has been created so to create 
        //3 posts we call wp_insert_post 3 times.
        // Create post object
        $my_bio_post = array(
             'post_title' => 'bio',
             'post_content' => 'This is my post.',
             'post_status' => 'publish',
             'post_author' => $user_id
        );

        // Insert the post into the database
        $bio = wp_insert_post( $my_bio_post );
        $my_portfolio_post = array(
             'post_title' => 'portfolio',
             'post_content' => 'This is my post.',
             'post_status' => 'publish',
             'post_author' => $user_id
        );

        // Insert the post into the database
        $portfolio = wp_insert_post( $my_portfolio_post );
        $my_contact_post = array(
             'post_title' => 'bio',
             'post_content' => 'This is my post.',
             'post_status' => 'publish',
             'post_author' => $user_id
        );

        // Insert the post into the database
        $contact = wp_insert_post( $my_contact_post );

        //and if you want to store the post ids in 
        //the user meta then simply use update_user_meta
        update_user_meta($user_id,'_bio_post',$bio);
        update_user_meta($user_id,'_portfolio_post',$portfolio);
        update_user_meta($user_id,'_contact_post',$contact);
}

user_registerフックを使ってその関数をフックします

add_action('user_register','create_new_user_posts');

更新 user_registerに関数をフックすると、その関数はユーザーIDを受け取るので、そのユーザーIDについて必要な情報を取得するのに使用できます。

$user = get_user_by('id', $user_id);

$ userはUSERオブジェクトなので、投稿のタイトルをuser infoユーザーに変更できます。ex:

'post_title' => $user->user_firstname . " ". $user->user_lastname . 'bio'
10
Bainternet