独自のWordPressユーザー連絡先フィールドを作成する

今日、私はあなたのために新しいプラグインを作成しました。ユーザーの連絡方法を処理するプラグイン。基本的に、管理でユーザーを編集する場合、「連絡先情報」ブロックがあります。さて、ここに独自のフィールドを追加する方法と、さらに進んで、登録ページにこれらの新しいフィールドを表示する(またはしない)方法を示したいと思います。.


これから作成するプレビューです。

カスタムフィールドの編集

編集ページの新しいユーザーフィールド

カスタムフィールド

登録ページのカスタムフィールド

そのために、いつものように、素晴らしくシンプルなプラグインを作成します!

ステップ1:プラグインを作成する

wp-content / pluginsに新しいフォルダーを作成し、それを「custom-user-contact-methods」と呼びます。この新しく作成されたフォルダー内に「rc-custom-user-contact-methods.php」というファイルを作成し、お気に入りのエディターソフトウェアで開きます.

このコンテンツを空のファイルに配置します。このコードはプラグインを登録するだけです:

ステップ2:カスタムフィールドを定義する

次に、カスタムフィールド、ユーザーエディションページ、および登録のデフォルトページで使用するフィールドを含む変数を作成する必要があります。これらのフィールドを$ extra_fieldsという変数に保存してみましょう.

$ extra_fields = array(
array( 'facebook'、__( 'Facebook Username'、 'rc_cucm')、true),
array( 'twitter'、__( 'Twitter Username'、 'rc_cucm')、true),
array( 'googleplus'、__( 'Google+ ID'、 'rc_cucm')、true),
array( 'linkedin'、__( 'Linked In ID'、 'rc_cucm')、false),
array( 'pinterest'、__( 'Pinterest Username'、 'rc_cucm')、false),
array( 'wordpress'、__( 'WordPress.org Username'、 'rc_cucm')、false),
array( 'phone'、__( 'Phone Number'、 'rc_cucm')、true)
);

3つのパラメーターを持つ配列内のすべてのフィールドを格納しています。最初のフィールドはフィールドID、2番目のフィールドはフィールドラベル、最後のフィールドはフィールドが登録ページに表示されるかどうかを定義するブール情報です。プレースホルダーや必要な情報など、必要なだけパラメーターを追加できます。.

ステップ3:適切なフィルターをフックする

次に、関数を適切なフィルターにフックする必要があります。この特定のケースでは、フィルターは「user_contactmethods」であり、作成する関数の名前は「rc_add_user_contactmethods」です。.

// user_contactmethodsを使用して新しいフィールドを追加します
add_filter( 'user_contactmethods'、 'rc_add_user_contactmethods');

ステップ4:カスタムフィールドを作成する

次に、「rc_add_user_contactmethods」関数を作成する必要があります。これは、カスタムフィールドをユーザー編集ページに追加するものです。良いニュースは、フィールドを配列内に格納したことです。これは、次の関数が完全に動的になることを意味し、$ extra_fields変数を変更するだけで新しいフィールドを簡単に追加できます.

/ **
*カスタムユーザーカスタム連絡方法を追加する
*
* @access public
* @ 1.0以降
* @return void
* /
function rc_add_user_contactmethods($ user_contactmethods){

//フィールドを取得します
グローバル$ extra_fields;

//各フィールドを表示します
foreach($ extra_fields as $ field){
if(!isset($ contactmethods [$ field [0]]))
$ user_contactmethods [$ field [0]] = $ field [1];
}

//連絡方法を返します
$ user_contactmethodsを返します。
}

このステップで、プラグインを保存してアクティブ化すると、ユーザー編集ページにカスタムフィールドが表示されます。正しいフックを使用しているので、「保存」フィールドデータを作成する必要はありません。したがって、プラグインは今のところうまく機能しています。しかし、もう少し進んで、登録ページにそれらのフィールドを表示するオプションを追加したいと思います。設定で[誰でも登録できる]チェックボックスをオンにしないと、[登録]リンクが表示されません。.

ステップ5:登録ページのフック

登録ページにフィールドを追加するには、少なくとも2つのフックにアクセスし、2つの関数を作成する必要があります。 1つはフィールドを表示し、2つ目はフィールドデータをデータベースに保存します.

関数をフックしましょう:

//登録プロセスにフィールドを追加します
add_action( 'register_form'、 'rc_register_form_display_extra_fields');
add_action( 'user_register'、 'rc_user_register_save_extra_fields'、100);

ステップ6:カスタムフィールド登録ページを表示する

上記のコードでは、2つの関数を宣言しました。 1つ目は、登録ページにフィールドを表示することです。この部分では、$ extra_fieldsの各配列の3番目のパラメーターを処理する必要があります。このブールパラメータは、フィールドを表示する必要があるかどうかを示します。 True:フィールドは表示されます、False:フィールドは表示されません.

/ **
*登録ページにカスタムフィールドを表示
*
*フィールドの3番目のパラメーターがtrueに設定されている場合、登録時にカスタムフィールドを表示
*
* @access public
* @ 1.0以降
* @return void
* /
function rc_register_form_display_extra_fields(){

//フィールドを取得します
グローバル$ extra_fields;

// 3番目のパラメータが「true」に設定されている場合、各フィールドを表示します
foreach($ extra_fields as $ field){
if($ field [2] == true){
$ field_value = isset($ _POST [$ field [0]])? $ _POST [$ field [0]]: '';
エコー '

'; } // endif } // foreachを終了する }

ステップ7:登録プロセス時にフィールド値を保存する

これで、フィールドが登録ページに表示され、データベースに値を格納する必要があります。これは、「rc_user_register_save_extra_fields」関数の範囲です。そのためには、「wp_update_user()" 関数.

/ **
*フィールド値を保存する
*
* @access public
* @ 1.0以降
* @return void
* /
function rc_user_register_save_extra_fields($ user_id、$ password = ''、$ meta = array()){

//フィールドを取得します
グローバル$ extra_fields;

$ userdata = array();
$ userdata ['ID'] = $ user_id;

//各フィールドを保存します
foreach($ extra_fields as $ field){
if($ field [2] == true){
$ userdata [$ field [0]] = $ _POST [$ field [0]];
} // endif
} // foreachを終了する

$ new_user_id = wp_update_user($ userdata);
}

結論

さて、ユーザーの連絡方法に新しいフィールドを追加する方法の基本を見ましたが、それだけです。たとえば、単純なunset()を実行して、「Yahoo IM」、「AIM」、「Jabber」などの既存のフィールドを削除できます。ただし、電話番号が適切な形式であるかどうか、フィールドが必要かどうかなどを確認するために、カスタムフィールドをサニタイズする関数を追加することもできます。コメントで特定の機能を要求することをためらわないでください!

最後に、フィールドのデータを表示したい場合は、これを使用します。

//パラメータ1はユーザーIDです
//パラメータ2はフィールドIDです
//パラメータ3は、varまたは配列を取得するためにあります
echo get_user_meta(1、 'twitter'、true);  
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me

    Like this post? Please share to your friends:
    Adblock
    detector
    map