web-dev-qa-db-ja.com

登録時にカスタム投稿タイプを作成する

私はこの問題に対する最善/迅速かつ簡単な解決策を見つけるのに苦労しています。

私は会社を作成するプラグインを持っていますが、ユーザーとして会社の情報をすべて保存しているので、すべての情報はユーザーのプロファイルに含まれています。私はpost/pages/cpt'sだけを検索し、ユーザーは検索しない別のプラグイン(Geo my WP)を持っています。

だから私は、ユーザーがプロファイルを作成したときにcptが作成され、住所などのデータの一部を保存する方法があると思いました。カテゴリも投稿メタデータと同様にそこに格納されています。冗長に思えますが、それから私の地理位置情報プラグインはカスタム変更のヒープなしでうまく機能します(可能ならば)。

Cptを自動的に作成し、ユーザー登録時にも更新される可能性があるのであれば、私は少し疲れます。

それとも他の解決策?

ところで:私は私がちょっと私が検索フォームで使用したい他のcptのものがあるように私のwpの地理を必要としています。

1
tjej2016

ユーザーがデータベースに追加された直後に呼び出されるアクションフックuser_registerがあります。ユーザーIDは引数としてフックに渡されます。

そのアクションに新しい投稿を挿入するためにwp_insert_postを使うことができます。ユーザーから関連情報を入手して投稿に追加するだけです。 wp_insert_postによって返される投稿IDを参照することで、作成した投稿にカスタムフィールドを追加できます。

これは、ユーザー登録時にカスタム投稿タイプの投稿を追加する方法の例です。明らかに自分のニーズに合うように変更する必要がありますが、それを行うことでアイデアが得られます。

/*
 * Create new custom post type post on new user registration
 */
add_action( 'user_register', 'wpse_216921_company_cpt', 10, 1 );
function wpse_216921_company_cpt( $user_id )
{
    // Get user info
    $user_info = get_userdata( $user_id );

    // Create a new post
    $user_post = array(
        'post_title'   => $user_info->nickname;
        'post_content' => $user_info->description,
        'post_type'    => 'your_company_custom_post_type', // <- change to your cpt
    );
    // Insert the post into the database
    $post_id = wp_insert_post( $user_post );

    // Add custom company info as custom fields
    add_post_meta( $post_id, 'company_id', $user_info->ID );
    add_post_meta( $post_id, 'company_email', $user_info->user_email );
}
2
Cai