WordPressをふつうに使っているだけでは知らないかもしれないマイナーな便利関数・ナゾ関数

talking horse

WordPress は常にアップデートを繰り返して進化を続けているんですが、巨大なプロダクトになったおかげで開発者がふつうに使っている分には知ることがないであろう便利な関数が隠されていたりします。

今回はそんな「普段あまり陽の目を浴びないけれどココにいるよ」的なマイナー関数をいくつかご紹介します。

CSS のインラインスタイルをキューにいれちゃうスゴイ関数

テーマカスタマイザーが実装されてから背景色や文字色のようないろんな要素を管理画面で変更できるようになりました。

こういったスタイル要素の外部指定をはじめると、CSS の内容を動的に変更させる必要があってどうしても CSS をインラインで書かざるを得ないなんてことがおきてきます。

表示さえ出来ればそれでいいって人には興味がないかもしれませんが、CSS をインラインで書くと継承関係がややこしくなったりしてメンテナンス性が落ちるので、できれば避けたいところ。

そんなときは wp_add_inline_style() を使いましょう。

APIはこちら
http://codex.wordpress.org/Function_Reference/wp_add_inline_style

使い方は、まず wp_enqueue_style でハンドルを登録して、wp_add_inline_style に登録したハンドルと同じ名前で CSS を入れてあげれば良いだけ。
wp_enqueue_style で登録されているハンドルであれば、最初から登録されている ‘style’ でもOK。

すんごい便利なので是非活用したいところです。

WordPress を WordPress にしてくれるナゾ機能

スペル補正機能ってマイクロソフトの Word あたりをつかったことがある人はわかると思いますが、英単語の綴りミスをソフト側が自動的に補正してただしいスペルに直してくれるっていうアレです。

実は WordPress にもスペル補正機能がコア機能として搭載されているって知ってました?
ただし、補正してくれる単語は「WordPress」のみ!

APIはこちら
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/capital_P_dangit

この関数をつかうと「Wordpress」の「W」と「P」を大文字、そのほかの文字を小文字にして勝手に統一してくれます。

もー、さすがに意味がわからない。
なぜにこの機能がコアにのっているのか。
いますぐ廃止になっても誰一人として困らないナゾ関数の筆頭です。

‘Y’と’N’を True と False に変換する関数

タイトルだけ見ると「なにそれ?」ですが、タイトル通りの機能をもった関数が bool_from_yn() です。

APIはこちら
http://codex.wordpress.org/Function_Reference/bool_from_yn

‘Y’と入れると True が返って、’N’と入れると False が返ってきます。
ただそれだけなんですが、フォーム周りの処理で意外につかう機会があるかも。

しかし、この関数をコアに入れる必要があるのか?というと……。なくてもよくない?

続きを読むを表示する <!–more–> の前後を個別に取得できるAPI

最初の数行を記事一覧用に表示して「続きを読む」を表示したい。
そんな要望を叶えるのが <!–more–> というタグでして、ビジュアルエディターのボタン一発でカンタンに記事分割ができたります。

ただ、こういう記事分割ができるようになると考えるわけです。
「分割した場所に広告とか載せたいな。記事中に自動で共通バナーとか貼りたいな」と。

そんなときは get_extended() の出番です。

APIはこちら
http://elearn.jp/wpman/function/get_extended.html

記事を get_extended に投げ込むと、中身を <!–more–> の前後で分けた配列を返してくれます。

これを single.php なんかで普通に get_the_content としていた箇所と置き換えれば、あっというまに「分割した場所に広告とか載せたいな。記事中に自動で共通バナーとか貼りたいな」が実現できます。

メールアドレスを悪徳クローラから守るAPI

ウェブサイト上にメールアドレスを掲載すると、どうしても悪徳なスパム配信業者やアドレス収集屋という人たちのメールアドレス自動収集ロボットに狙われてしまいます。
いまどきそんなことしてなんになるのよという点は置いておいて、事実としていまだにそういうことをしている人がいるんですよ。

スパムメールなんて放っておけばいいじゃないと言っても、そういう人たちにメールアドレスが渡ってしまうのは気持ちが良いものではないのでアレコレ対策を取ろうとするわけです。

で、実はWordpressにもメールアドレスが自動収集ロボットに狙われにくくするための関数がコア機能として用意してあります。
それが antispambot() という関数です。

APIはこちら
http://codex.wordpress.org/Function_Reference/antispambot

antispambot 関数はメールアドレスをエンティティ化して、人が見るぶんには普通に見えるけどHTMLコード上では一見してメールアドレスに見えない文字に変換してくれます。
ちなみに記事コメントのメールアドレスを表示するときに WordPress がこの関数で自動変換をしてくれています。

まあ、自動収集ロボットも進化しているみたいなので気休め程度ですが、なにもやらないよりはまし!
まあ、こうしたアレコレ対策については以前ちょこっと触れているのでそちらも良ければどうぞ。
画像を使わずメールアドレスをロボットから守るCSSコード

WordPress でメールアドレスを表示するときは思い出してやってください。

参考URL:
http://webcre-archive.com/2012/06/05/wordpress-entity/

コンテンツからショートコードを除去する関数

テーマやプラグインを作っていると記事の本文を解析したくなることがあるんですが、記事にはショートコードが含まれたりするので意外に解析に手間取ったりします。
そんなときは strip_shortcodes() をつかってみてください。

APIはこちら
http://elearn.jp/wpman/function/strip_shortcodes.html

記事を strip_shortcodes に投げるとショートコードを取り除いた文字列で返してくれます。

以前ショートコード系のプラグインをつかって記事を書いていたけど、つかわなくなってしまったのでショートコードを取り除きたいというときにも使えるかもしれませんね。

カスタム投稿タイプを追加するときにパーマリンク(URL)を書き換える関数

かなりヘビーにWordpressを使いこなしている人は、カスタム投稿タイプというやつを使ったことがあるかもしれません。

カスタム投稿タイプというのは簡単にいえばオリジナルの投稿ページのことでして、くわしく説明しだすとながくなるので興味がある方はここに詳しく書いてあるのでどうぞ。

で、そんなカスタム投稿タイプを使おうと自前でコーディングするとよくハマるのがパーマリンクがうまく動かないで 404 になっちゃうという問題。
これは URL リライトルール の更新をしないと起こるんですが、そんなときは flush_rewrite_rules() で URL リライトルールを更新しちゃってください。

APIはこちら
http://elearn.jp/wpman/function/flush_rewrite_rules.html

ちなみに register_activation_hook などの register 系をつかっているのは、flush_rewrite_rules は登録時に一回実行すれば更新が完了するのでこうなってます。

意外に URL リライトルール系はハマりやすいので注意です。

参考URL
http://morilog.com/wordpress/tips/flush_rewrite_rules/

モバイルを判定する関数

アクセスしてきたデバイスがパソコンなのかモバイルなのかでページの内容を変えたり、デザインを変えたりすることがあると思いますが、そんなときに使えるのが wp_is_mobile() です。

最近はちょっとしたことならフロント側で Modernizr.js をつかってアレコレやるのがトレンドっぽいですが、大きく内容を切り替えたりするならサーバサイドでやるのがベターです。

APIはこちら
http://elearn.jp/wpman/function/wp_is_mobile.html

HTTP_USER_AGENT でモバイル判定をしているので柔軟性が高くて使いやすい関数です。
実装時期が比較的あたらしく、Wordpress3.4 から実装された関数なので意外に知らない人が多いかもしれません。

ちなみに似たようなものとして、デバイスだけじゃなく、アクセスブラウザをしらべる $is_IE、$is_chrome、$is_gecko というグローバル変数や、アプリケーションサーバをしらべる $is_apache、$is_IIS、$is_nginx なんてのもあります。


 

ということでWordpressのマイナー関数8つをご紹介しました。
マイナーなだけあって使う機会はすくないかもしれませんが、機会があればつかってあげてください。