WordPressでサイトを制作されている皆さん、お疲れ様でーす!!

カスタムフィールドの制作どうやってますか?
私は最近まで Advanced Custom Field プラグインでやっていたんですが
株式会社リクトの制作チームの中田さんの影響で
Custom Field Suite」を使い出しました。

これがとにかく使いやすい!
・・・使い方はあえてこのブログでは触れません。
先人たちの記事をご覧ください。

で、使っていて「ユーザー」っていうフィールドを作れるのが便利なんですよ!!
会員制サイトで「ユーザー」を選択させる項目ってあると思います。

その際にこの「ユーザー」を選んでいざカスタム投稿を行おうとすると

表示が taman777 (仮)みたいにユーザーのログインアカウントだったりするんですよね。

で、誰がどんなアカウントか覚えているわけがない(笑)

そこでこの Custom Field Suite プラグインのフィルターフックを使ってユーザーの表示を
nickname にしてみようと思いました。

下記コードを使用テーマの functions.php に書き込めば使えちゃいます!!
※プラグインを利用しているかどうかの判断等本来必要ですが割愛しています。

/**  Custom Field Suite のユーザー表示変更 */
//apply_filters( 'cfs_user_display', $user->user_login, $user->ID, $field );
add_filter('cfs_user_display', 'my_cfs_user_display');
function my_cfs_user_display($user_login, $user_ID, $field) {
    // $user_ID から nickname取得し返却する
    $user = get_user_by( 'login', $user_login );
    $user_ID = $user->ID;
    $field = $user_login; // $fieldの中になにも入っていなかったりするので user_login わざわざ定義
    $nickname = get_the_author_meta('nickname', $user_ID);
    // 実はユーザーのカスタムフィールドも入ります。
    // カスタムフィールド user_title は「肩書き」を入れてます。参考まで
    $user_title = get_the_author_meta('user_title', $user_ID);
    if ( $nickname != NULL ) $field = '('.$user_title.')'.$nickname;
    return $field;
}

この通りやると( user_title ってカスタムフィールドは普通ないと思うので適宜変更または飛ばしてください)

ユーザーのフィールドに

(ジーティーアイ 代表取締役)佐藤 毅

みたいに出ます。

会員制のサイトとかだと user_login 出されてもわからんよ〜ってなってしまうところですが
これでユーザーをしっかり紐付けられるという感じ。
nickname が取れない場合は user_login が表示されます。

参考になさってください〜。

Custom Field Suite の制作者様、便利なフックまであって大変重宝するプラグインをありがとうございました!

この記事が気に入ったら
いいね ! しよう

Twitter で