(知らなかった)WordPressの外部コンテンツの埋め込み

WordPressが高機能すぎて、普段の使用では知らなかった機能がたくさんあることがわかりました。

ここ最近、少しでもこのブログを扱いやすくしたいと思って、本を読みながらWordPressの開発方法を勉強しています(ソシム「WordPress ステップアップブック」)。その中でわかってきた機能を、メモしておきます。

外部コンテンツの埋め込み

WordPressには、テキスト内のURLを解析して他のサイトのコンテンツを埋め込みしてくれる機能があるみたいです(oEmbedというらしい)。YouTubeやTwitter、InstagramなどUGCを主体としたサイトのコンテンツURLを記述したらOKみたいです。

これまでYouTubeの埋め込みとかiframeでやってたから、面倒だなと思っていたけど、早くこれを知りたかった……。

JavaScriptの扱い方

これまで、ヘッダーまたはフッターにスクリプトを書く場合、wp_headやwp_footerのフックでechoするように書いていたんだけど、推奨されているわけではないことがわかった。wp_register_scriptというメソッドで追加するらしい。まだやってないけど、今後対応するつもり。てか主要なJavaScriptのライブラリ?はWordPressにEmbedされているっぽくて、それを使えば良さそう。

エディタのアイコンをカスタマイズ

できるらしい(まだやってないけど)。このへんが参考になる。

WordPress:ビジュアルエディタをカスタマイズする際の備忘録

ひとまず、今日はこのへんで。

WordPressにGoogle Analyticsを導入する

プラグインで入れればおそらく導入は簡単。でも、数行のコードを入れるだけなので、プラグイン入れるほどでもない。なので、今回はfunctions.phpにカスタム関数を追加する方法でやってみることにした。

実装する記述

functions.phpに以下の記述を追加する。

// headerタグの出力処理に、独自の関数の処理を追加する
add_action('wp_head', 'add_ga_script_if_not_logged_in');

// ログインしていない場合に、Google Analyticsのスクリプトを追加する
function add_ga_script_if_not_logged_in() {
    if ( !is_user_logged_in() ) {
        echo '
<script>
(function(i,s,o,g,r,a,m){i[\'GoogleAnalyticsObject\']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,\'script\',\'https://www.google-analytics.com/analytics.js\',\'ga\');
ga(\'create\', \'UA-xxxxxxxxxx-x\', \'auto\');
ga(\'send\', \'pageview\');
</script>
';
    } // end if
}

インデントがおかしくなっているが、HTMLに出力されたときにきれいに出すには、こうするしかなかった……。

WordPressを常時SSL化する

httpでアクセスしても、httpsにリダイレクトするよう、htaccessを修正した。

追加する記述

具体的には以下の通り。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

httpsではないリクエストが来たら、httpsに置換したURIで、301リダイレクトする、という感じ。

5回目のWordPress

なぜまたブログを始めることにしたのかを、簡単にまとめておきます。

久しぶりにWordPressを触りたかったのが一番の理由。厳密には1年半ぶりだけど。

Evernote以外で、文字だけで残せる場所が欲しかったというのも大きい。Instagramは写真が必要だし、Twitterは140字でなんか少ないし、長く書いたらさかのぼらないといけないから大変。TumblrもいつのまにかYahoo.comのアカウント必要になってログイン煩雑だし、なんか続かないし。

文字だけでもいいから、ゆるく書き続けられる場所が良かったという感じ。