知ってるとちょっと便利なWordPress関数
さむいですね。
先日、世界キャラクターさみっとへ片道3時間半かけて朝いちで行ってきました。
もちろんひとりです。楽しかったです。まりぞーですヽ(゜ω゜)ノ
モンハン4Gが一段落したので、そろそろ違うゲームにハマりたい今日この頃です。
ソニックムーブ Advent Cakendar 2014 19日目の記事です。よろしくお願いします。
というわけで先日、Wordpressの関数が紹介されている記事を見かけまして
10 Useful WordPress Functions You Might Not Know About
見落としがちなもんでやんすね!
日本語版の関数リファレンスを見ても殆ど記事がないですしおすし。
プラグインを入れなくても、functions.phpをちょろりといじれば実装できる機能とか、結構あるんですよね。
そこでですね、(私が)こりゃ便利!(私が)知らなかった!的な関数をご紹介します。
WordPress 4.0.1では動作確認しましたが、他のバージョンでは書き方が異なっていたりサポートされていないかもしれないので、ご注意をば…。
目次
Antispambot()
記載されているメールアドレスをスパムボットから守るために、HTMLエンティティに変換します。
定義箇所はformatting.phpにあります。
基本的には
1 2 3 |
[php] echo antispambot('メールアドレス', 1); [/php] |
だけで表示できます。変換方法の指定もできます。
だがしかし!ビジュアルエディタ等のプラグインと相性がよろしくないようなので、実際に利用するときにはショートコードに設定してあげると誤動作が防げるようです。
まずはfunctions.phpに下記を追加します。
1 2 3 4 5 6 7 8 9 10 |
[php] function antispambot_short($atts) { extract(shortcode_atts(array( 'text' => '', 'mail' => '' ), $atts)); return '<a href="mailto:' .antispambot($mail, 1). '">' .$text .'</a>'; } add_shortcode('email_antispam', 'antispambot_short'); [/php] |
そして記事の編集画面で下記を入力します。
1 2 3 |
[php] [email_antispam mail="mogmog@example.com" text="もぐむしゃ"] [/php] |
mailにメールアドレス、textにリンクを貼りたいテキストを入れます。
展開されたソースを見てみると
1 2 3 |
[html] <a href="mailto:%6dog%6dog@e%78%61mp%6ce%2ec%6fm">もぐむしゃ</a> [/html] |
ちゃんと変換されてました。ヤッター!
部分的に変換することで、表示されるたび異なる結果にしているようですね。
ちなみに、リンクをクリックすると
メーラーが起動して、正しくメールアドレスが表示されました。
参考URL
Human_time_diff()
時間差を「2日前」や「5分前」のように、相対的に表現します。
定義箇所はformatting.phpにあります。
とりあえずCodexのソースをコピペしてみます。
1 2 3 |
[php] <?php echo human_time_diff( get_the_time('U'), current_time('timestamp') ) . ' ago'; ?> [/php] |
6日 AGOになりましたが、ちょいとおしゃれすぎるので
1 2 3 |
[php] <?php echo human_time_diff( get_the_time('U'), current_time('timestamp') ) . '前'; ?> [/php] |
これでよし。
参考URL
balanceTags()
閉じていないタグを調整し、出力します。
定義箇所はformatting.phpにあります。
1 2 3 4 5 6 7 8 9 10 11 |
[php] <?php $html = '<ul> <li>もちもち <li>ぎゅもぎゅも <li>むがむが <li>ぺちぺち </ul>'; echo balanceTags($html, true); ?> [/php] |
1 2 3 4 5 6 7 8 |
[html] <ul> <li>もちもち </li><li>ぎゅもぎゅも </li><li>むがむが </li><li>ぺちぺち </li></ul> [/html] |
美し…くはないです。
参考URL
Wpautop()
投稿画面のエディタのように、改行部分に自動でタグを挿入してくれます。
定義箇所はformatting.phpにあります。
1 2 3 4 5 6 7 8 9 10 11 12 |
[php] <?php $some_long_text = ' なにか テキスト おしり '; echo wpautop( $some_long_text ); ?> [/php] |
1 2 3 4 5 |
[html] <p>なにか<br /> テキスト</p> <p>おしり</p> [/html] |
逆にエディタの自動改行や段落の挿入を無効化させたい場合は、functions.phpに以下を追加します。
1 2 3 4 |
[php] remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' ); [/php] |
参考URL
wp_is_mobile()
モバイル端末(ガラケー・スマホ・タブレット)でアクセスしたときの処理を指定できます。
定義箇所はvars.phpにあります。
1 2 3 4 5 6 7 8 9 10 11 |
[php] <?php if ( wp_is_mobile() ) : ?> スマホか<br /> ガラケか<br /> タブレット <?php else : ?> PC<br /> ほげげ<br /> おべべべべ <?php endif; ?> [/php] |
PCでの表示
PC以外での表示
タブレットとPCを同じ表示にしたいときや、さらに細分化したいときなどは、関数を自作する必要があるようです。
あるいはプラグインを利用する方が良いかもしれません。
そのあたりの詳細は参考URLまで☆ミ
参考URL
wp_redirect()
リダイレクト処理を指定できます。
定義箇所はpluggable.phpにあります。
wp_redirect()
何がなんでもリダイレクトします。
1 2 3 |
[php] <?php wp_redirect( home_url() ); exit;?> [/php] |
wp_safe_redirect()
URLが有効か確認してからリダイレクトします。
1 2 3 |
[php] <?php wp_safe_redirect( home_url() ); exit;?> [/php] |
とりあえず使ってみる
下記をfunctions.phpに追加すると、404ページではサイトトップに飛ばされるようになります。
1 2 3 4 5 6 7 8 9 |
[php] function redirect() { if (is_404()) { wp_redirect( home_url()); exit; } } add_action( 'wp', 'redirect' ); [/php] |
参考URL
さいごに
私が知らない関数の備忘録、いかがでしたかね。
Wordpressに限ったことではないですが、いろんな機能が廃止になったり追加されたりで忙しいので追いつくのが難しいです(゜ω゜)
常にアンテナ張りつつ情報整理しつつ、お勉強がんばりましょー。
ガンバルゾー!ガンバルゾー!(゜ω。)