Wordpressでユーザーの連絡先項目を変更する

あいかわらず腰痛で
なかなかSLにINできないあきです(´ω`;)

SLネタではないのですが、忘備録として
Wordpressのカスタマイズを書き留めておきますん。

最近はレンタルサーバーの月額費用も数百円とお安くなっていますし
だいたいどこのレンタルサーバーでも簡単にWordpressとかインストールできるんで
SLやっている方でも利用している人もいるんじゃないでしょうか。

ただ、インストールして自前サーバーのWordpressにログインしてみて
自分のプロフィールを確認してみると「アレッ!???∑(*゚ェ゚*)」って
思うのが……

この連絡先情報の項目ですよw

デフォルトの設定だとこんな感じ
Wordpressのユーザープロフィールの設定のところ。連絡先項目が幾つか記入できるようになっていますが……

「AIM……?? Yahoo IM?? GoogleTalk?? Jabber???」

って、人もいると思います。

イマドキなら、TwitterやFacebookとか入れたいと思うのが人の情ってもんです。

SLユーザーならmy.secondlife.comのプロフィール情報のURLとかマーケットプレイスのURLとかSL関連SNSのURLとか。

まあ、AIM項目とかに違うサービスのURL入れておいてテンプレートをいじってなんとかするというのもアリだと思うのですが、割と簡単なカスタマイズで項目を修正できるです。


修正の前にWordpressのカスタマイズを大雑把に説明するとフックという機構を利用します。

Wordpress公式ドキュメント:フィルターフック一覧
Wordpress公式ドキュメント:アクションフック一覧

この辺の公式ドキュメントに詳細が出ています。

このフックにカスタマイズ処理を登録しておくと
要は、Wordpressシステム本体が何か必要な処理をした後に、そのカスタマイズ処理のコードも実行してくれちゃうというものです。

んで、この連絡先情報項目のフックは「user_contactmethods」というフィルターフックです。

ざっくりコードを書くとこんな感じ。
/*
Plugin Name: SL Custom User Contactmethods
Plugin URI:
Description: Cutomizing your UserContactMethods for SL
Version: 0.0.1
Author: Hogehoge
Author URI:
License: GPL2
*/
function custom_user_contactmethods( $user_contactmethods ) {
    return array(
     'SecondLife' => 'SecondLife',
        'twitter'  => 'Twitter',
        'skype'    => 'Skype',
        'facebook' => 'Facebook',
        'flickr' => 'flickr'
    );
}

add_filter( 'user_contactmethods', 'custom_user_contactmethods' );

赤字部分はプラグインヘッダというWordpressが「お!プラグインなのね」と認識するためのコメント部分で、これがないとプラグインと認識されませぬ。

とはいえコメントなので、実行には何の関わりもないので、処理の実体は無着色部分です。WordpressはPHPで書かれているシステムなので、このコードもPHPですが、
呼ばれたら連想配列をリターンするだけの超単純なコードです。

この「'XXXX' => 'YYYY'」の部分が「'内部識別キー' => '表示項目名'」となっていますん。

問題は、これをドコに??
上のファイルに適当に名前をつけて手元のPCに保存しておきましょう。
「sl_custom_user_contactmethods.php」と最後に拡張子phpつけておけば大丈夫。
メモ帳とかで保存すると改行コードとか合わなくなるので、ちゃんとしたテキストエディタかなにかで、改行コード「LFのみ」と文字コード「UTF-8 BOM無し(UTF-8N)」で保存しましょい。

えーと、FTPとかレンタルサーバー屋さんのコントロールパネルのファイルマネージャとか使えると簡単なプラグインにして組み込むのが常套手段じゃないかなと。

プラグインは、Wordpressがインストールされているディレクトリ下の「wp-conntents/plugins/」というとこにプラグインごとにディレクトリを分けて格納します。

たとえば、このプラグインを格納するディレクトリ名をここは適当に「sl_custom_user_contactmethods」 なんて感じにしてみましょうか。
(実際、他のプラグインのディレクトリ名と被らなければ任意の名前でかまいません。)

サイトのURLが「http://www.v2-lab.com/wp3/」でサーバ上のパスが「/home/hiro/v2-lab.com/wp3」とかだったら、プラグインを入れるパスは「/home/hiro/v2-lab.com/wp3/wp-conntents/plugins/sl_custom_user_contactmethods」ということになります。

そんで、このディレクトリにさっき保存した「sl_custom_user_contactmethods.php」をアップロードします。

そしたら、Wordpressのダッシュボードにログインして、プラグイン一覧を確認してみてください。


こんなふうに表示されればOK。「有効化」をクリックしてみてください。

もし、エラーがでてダッシュボードに入れなくても慌てないでください。
sl_custom_user_contactmethods.phpのコピペミスか、文字コード改行コードなどのなにかしらの不備を直してアップロードしなおせば、ダッシュボードに入れるようになります。

どうしてもエラーが出てダッシュボードに入れない場合はディレクトリ「sl_custom_user_contactmethods」自体を削除すれば元に戻ります。

エラーもでないようでしたら、そのままプロフィールを確認してみてください。

上手くいったら、こんな感じに連絡先情報欄がカスタマイズされますヾ(´・∀・)ノ

「プラグインにして組み込むなんてムズぃわあ(;´Д`)」という奥様のためにコッソリ抜け道を……。

Wordpressのテンプレートには「function.php」というテンプレートごとに独自の処理を組み込むようになってるんですが、これはダッシュボードから「テンプレートの編集」を選ぶとそのまま編集できるので、ここに上のコードの黒字部分をコピペしてしまうという手もあります。

ただ、この抜け道は、テンプレートを別のテーマに入れ替えるとfunction.phpも入れ替わるんで、プロフィールのカスタマイズがデフォルトに戻っちゃうんですね。
(テーマを変えるたびにfunction.phpに黒字部分をコピペしないといけない)

オチとしては、そもそもuser_contactmethodsのデータを表示するようなテーマテンプレートじゃないとカスタマイズしても、あんまり意味がないっちゅうとこで(;´Д`)







コメント