カテゴリー: WordPress

WordPress に関係する記事。テーマやプラグインのことを綴っています。

  • Force Regenerate Thumbnails を使って画像を整理することのススメ、環境によっては画像ファイルが半分に。

    Force Regenerate Thumbnails を使って画像を整理することのススメ、環境によっては画像ファイルが半分に。

    WordPress のプラグイン。

    Regenerate Thumbnails は有名ですがそれとは違い。

    サーバー移行時に使って、画像902枚-9800画像ファイルが 4900ファイルと半分、ファイル容量はマイナス200MBになりました。

    頗るすこぶ便利(テーマを変えたことがない人は使う必要ありません)だったので紹介。

     

    Force Regenerate Thumbnails とは

    現在のテーマで定義されている画像サイズに基づいて、画像を再生成してくれるプラグイン。

    ここまでは前述の Regenerate Thumbnails と同じです。

    Force Regenerate Thumbnails はさらに、もう不要になった画像サイズの画像を削除してくれるんですねー。

     

    Force Regenerate Thumbnails 使い方

    プラグインのダウンロード・インストールは割愛。

    有効化すると、メニューのツールにプラグイン実行メニューが追加されます。

    設定とかはないよ
    設定とかはないよ

     

    ここからできるのは一括リサイズ。

    Regenerate All Thumbnails を押すと一括処理の開始。

    万が一に備えて、画像のバックアップはしておきましょうね。

    Regenerate All Thumbnails
    Regenerate All Thumbnails

     

    処理中は進捗が見られます。

    画像リサイズ&削除&再生成中
    画像リサイズ&削除&再生成中

     

    これだけでOK、使用中のテーマに則ったサイズの画像が生成され、今使われていないサイズの画像は消してくれます。

     

    Force Regenerate Thumbnails を使う時の注意

    2014.02.10 追記

    便利なプラグイン、2点だけ注意した方がいいところ。

     

    ひとつめ、他のプラグインとの兼ね合いです。

    EWWW Image Optimizer や、WP Smush.it などの画像最適化系プラグインを入れてあるとその仕様上、

    リサイズと最適化が同時に行われてしまい、速度低下はもとより、サーバーへの負荷がかなり上がってしまいます。

    場合によってはサーバーに制限を喰らうかもしれませんので、Force Regenerate Thumbnails を使う前にはそれらの画像最適化系プラグインはいったん停止し、画像の再生成後に元に戻すことをオススメします。

     

    ふたつめ、以前に WordPress デフォルトで生成された画像も置き換えてくれるのですが、投稿やカスタムフィールドの画像パスは置き換えてくれません。

    DB データを置換するか、投稿の画像を再編集しましょう。

     

    ホホまとめ

    テーマごとに色んな画像サイズを定義してあることが大半なので、一度でもテーマを変えたことがある人にはもってこいかと。

    サーバー容量は余ってるケースがほとんどだと思いますが、こんなプラグインがあるよって覚えておくと何かの時に役立つと思います。

  • Jetpack 次バージョン (2.8) では関連記事表示とマークダウン・パブリサイズのカスタム投稿タイプ対応が追加される模様

    Jetpack 次バージョン (2.8) では関連記事表示とマークダウン・パブリサイズのカスタム投稿タイプ対応が追加される模様

    WordPress をサーバーへインストールして使っている人ならもはや、ほぼ使っているでしょうか、Jetpack

    パブリサイズ共有という SNS への自動投稿機能がカスタム投稿タイプに対応していなかったため、 Jetpack の開発動向を Github でずっと追いかけていたんですが、めでたくカスタム投稿タイプ、パブリサイズ対応。

    と他を見てみるとなんと関連記事表示とマークダウンの機能が追加されており。

    関連記事表示とマークダウンの機能が追加
    関連記事表示とマークダウンの機能が追加

    試してみたんで紹介もかねて。

     

    Jetpack 関連記事表示

    有効化しまして設定へ。

    Jetpack 関連記事設定
    Jetpack 関連記事設定

     

    設定項目は

    • “関連記事” 題名の表示・非表示
    • サムネイルの表示・非表示

    が現段階で設定できる模様。

    Preview のところは「こんな感じに表示されるよ~」ってやつですね。

    Jetpack で関連記事が使えると、入れているプラグインを1つ減らせるひと、多いのでは。

     

    Jetpack マークダウン対応

    マークダウンというのは、HTML の入力を減らせる記述方法。

    たとえば、こんな感じで書くと

    # This is an H1 #
    
    ## This is an H2 ##
    
    ### This is an H3 ######
    
    *   Red
    *   Green
    *   Blue

     

    こう変換してくれるってやつです。

    <h1>This is an H1</h1>
    
    <h2>This is an H2</h2>
    
    <h3>This is an H3</h3>
    
    <ul>
    <li>Red</li>
    <li>Green</li>
    <li>Blue</li>
    </ul>

     

    Jetpack マークダウン使える場所は

    機能の説明書きには

    Markdown lets you compose posts and comments with links, lists, and other styles using regular characters and punctuation marks. Markdown is used by writers and bloggers who want a quick and easy way to write rich text, without having to take their hands off the keyboard, and without learning a lot of complicated codes and shortcuts.

    と書いており、投稿画面・コメント欄で使える、と。

     

    Jetpack マークダウンを投稿画面で試す

    実際やってみると、

    Jetpack マークダウン投稿を試す
    Jetpack マークダウン投稿を試す

     

    ちゃんと表示されましたー。

    マークダウンをちゃんと HTML で表示してくれた。
    マークダウンをちゃんと HTML で表示してくれた。

     

    Jetpack パブリサイズ共有、カスタム投稿タイプ対応

    これです、ぼくが待っていたのは。

    自分のブログでは自動投稿しないんですが、ちょっと作り込んだサイトだとカスタム投稿タイプを作ったりして。

    かつそれを自動投稿したかったら自分で実装するか、2・3のプラグインを入れる必要がありました。

    もういりません。

     

    パブリサイズ共有をカスタム投稿タイプに対応させる方法

    件の変更点を見てみる。

    post_type_supports に ‘publicize’ を追加すればいけることがわかる。

    ということで、カスタム投稿タイプを追加する register_post_type の ‘support’ 配列に ‘publicize’ を追加してやる

    /**
     * 任意のカスタム投稿タイプの関数例
     */
    function hoge_init() {
    	$labels = array(
    		'name' => 'hoge',
    	);
    
    	$args = array(
    		'labels'   => $labels,
    		'supports' => array(
    			'title',
    			'editor',
    			'author',
    			'thumbnail',
    			'excerpt',
    			'comments',
    			'publicize'
    		)
    	);
    
    	register_post_type( 'hoge', $args );
    }
    
    add_action( 'init', 'hoge_init' );

     

    もしくは、子テーマなどから親テーマのカスタム投稿タイプへ追加したい場合はこんな感じで追加する

    /**
     * カスタム投稿タイプのサポート機能を追加する関数例
     */
    function hoge() {
    	add_post_type_support( '追加したいカスタム投稿タイプの名前', 'publicize' );
    }
    add_action( 'init', 'hoge' );

     

    と、カスタム投稿の投稿画面でもパブリサイズ共有の欄が現れるようになる。

     

    まとめ

    Jetpack、えらい勢いで機能が追加、しかも便利なのでほんと作ってる人たちはすごいなーと。

    新しい機能を一刻も早く使いたいひとは Github からダウンロードすればいいと思うよ。

    年末~正月明けいろいろあった新年初更新でした。

    2014/01/24 追記: 関連記事は2.8ではいったん削除され、その次になりそうです

  • WordPress ログイン中の管理画面・管理バーで読み込まれる open-sans ウェブフォントは個人的に不要なので無効化するコードを書いて実装した。

    WordPress ログイン中の管理画面・管理バーで読み込まれる open-sans ウェブフォントは個人的に不要なので無効化するコードを書いて実装した。

    WordPress 3.8 から管理画面のデザインが一新されました。

    それに伴い、管理画面のフォントは open-sans ウェブフォントがデフォルト指定になり。

    あいにくぼくは日本語ユーザーですので、管理画面内のフォントは 9割方日本語。

    open-sans 別にいらないじゃん」

    と考えたため無効化することに。

     

    コアファイルを探す

    無効化するために WordPress 内を grep。

    /wp-include/script-loader.php 内、wp_default_styles にて発見。

    function wp_default_styles( &$styles ) {
    
    	~中略~
    
    	$styles->add( 'open-sans', $open_sans_font_url );
    
    	~中略~
    
    }

     

    これをフック使って取り除けばいい、と。

     

    フック

    フックは wp_default_styles 。

    Codex http://codex.wordpress.org/Plugin_API/Action_Reference/wp_default_styles はまだ書かれていないようです。

    function hoge( &$styles ) {
    	// 処理
    }
    add_action( 'wp_default_styles', 'hoge' );

     

    こういう感じで実行です。

     

    open-sans を無効化するコード

    やってることは

    • 関数作成
    • 処理を記述
    • フックを登録

    というところ。

    // 管理バー open-sans ウェブフォントを無効化
    function disable_load_opensans ( &$styles ) {
    	$styles->remove( 'open-sans' );
    	$styles->add( 'open-sans', null );
    }
    add_action( 'wp_default_styles', 'disable_load_opensans' );

     

    functions.php にコピペでオッケーです。

    ちなみに open-sans、引数を null で再度追加しているのは、open-sans をハンドルとして動いてる他の css があるからです。

     

    日本語以外の多言語環境も考慮すると

    日本語環境前提で書きましたが中には多言語環境で使ってるかも。

    ということで WordPress が日本語で動いてる時だけ実行するようにすると

    // 日本語環境で動いてる場合
    if ( get_locale() === 'ja' ) {
    	// 管理バー open-sans ウェブフォントを無効化
    	function disable_load_opensans ( &$styles ) {
    		$styles->remove( 'open-sans' );
    		$styles->add( 'open-sans', null );
    	}
    	add_action( 'wp_default_styles', 'disable_load_opensans' );
    }

     

    こうなりました。

     

    まとめ

    フックをある程度コアのソースを見て使えるようになるとできることが飛躍的に増えてうれしいです。

    というか、こういうのをまとめたプラグインを作ったらいいんですねきっと。

  • WordPress 管理画面の投稿・ページ一覧に投稿IDとページIDを追加する便利な functions.php のコードを書いてみた。

    WordPress 管理画面の投稿・ページ一覧に投稿IDとページIDを追加する便利な functions.php のコードを書いてみた。

    「投稿とかページのIDを簡単に調べたいんだけど!!!」

    ということなので調べて実装してみた。

    投稿IDを使ってどうこうするってのはページで使うことが多いですかね、さて。

    コードだけ見れればいい、って方は読まずに一番下までいってください。

     

    関数をフックするポイントは 4つ

    投稿・ページ一覧画面に ID を表示できればいいので、一覧のタイトル・行 x2 の 4つでした。

    関数の説明は割愛、Codex リンクでお届け。

     

    manage_pages_columns

    ページ一覧の行タイトルを操るフック。

     

    manage_pages_custom_column

    Codex にはまだドキュメントがありませんね。

    http://codex.wordpress.org/Plugin_API/Action_Reference/manage_pages_custom_column

    ただ、後述の manage_posts_custom_column と内容はほぼ一緒です。

     

    manage_posts_columns

    投稿一覧の行タイトルを操るフック。

     

    manage_posts_custom_column

    投稿一覧の各行を操るフック。

     

    Codex はサンプルのコードが載っているのでほんとわかりやすいですね。

    ということでしゅっと実装して↓

     

    IDを表示するコードができた

    こんな感じ。

    functions.php に書くと、投稿・ページ一覧に ID が表示されるようになります。

    /**
     * 投稿・ページ行タイトルに項目 ID を追加する関数
     *
     * @param $columns
     *
     * @return mixed
     */
    function add_id_to_columns_title( $columns ) {
    	// 行タイトルに post_id を配列キーとした ID という名前を追加
    	$columns['post_id'] = __( 'ID' );
    	// post_id 用のスタイル
    	echo '<style>.column-post_id{width:40px;}</style>';
    	return $columns;
    }
    // 関数をフックして適用
    add_filter( 'manage_posts_columns', 'add_id_to_columns_title' );
    add_filter( 'manage_pages_columns', 'add_id_to_columns_title' );
    
    /**
     * 各行に投稿 ID を出力
     *
     * @param $column
     * @param $post_id
     */
    function add_id_to_column_rows( $column, $post_id ) {
    	switch ( $column ) {
    		// 行のキーが post_id なら ID を出力
    		case 'post_id':
    			echo "<span class='$column-$post_id'>$post_id</span>";
    			break;
    		default:
    			break;
    	}
    }
    // 関数をフックして適用
    add_filter( 'manage_posts_custom_column', 'add_id_to_column_rows', 10, 2 );
    add_filter( 'manage_pages_custom_column', 'add_id_to_column_rows', 10, 2 );
    投稿一覧にIDが表示されましたー
    投稿一覧にIDが表示されましたー

     

    ちなみに、並び替えの実装はしてないので並び替えはできません。

    需要があればやろうかしら。

     

    まとめ

    プラグインを使ったらできることをあえて、プラグインを使わずやることで勉強になりますほんと。

    カテゴリやタグでも他のフックを使えば色々できそうですね。

  • wp_trim_words、文字列を指定した文字数で html タグを除去して取得できる便利な関数がそれ。

    wp_trim_words、文字列を指定した文字数で html タグを除去して取得できる便利な関数がそれ。

    WordPress を使ってちょっと込み入ったことをやりたい、ってときに便利なやつです。

    最近よく使うのでメモ。

     

    Codex

    Codex、ほんと助かります。

     

    wp_trim_words の引数

    <?php $trimmed = wp_trim_words( $text, $num_words = 55, $more = null ); ?>

    ひきすうは3つ。

    • $text…必須、切り取りたい文字列
    • $num_words…切り取りたい文字数。デフォルト値は 55文字。
    • $more…切り取った文字列の後に追加したい文字や html。デフォルトは値 null

    配列とかややこしいのは出てこないので使いやすいですね。

    注意するのは WordPress 3.3 以上でないとこの関数を実装していないことです。

     

    wp_trim_words を使ってみる

    使ってみれば簡単に理解できますきっと。

    yahoo.co.jp サイトの文字列を 50文字切り取って出力するサンプル。

    <?php
    $html = file_get_contents( 'http://www.yahoo.co.jp/' );
    $html = wp_trim_words( $html, 50, '' );
    echo $html;
    ?>
    出力結果は↓
    
    Yahoo! JAPAN ヘルプ Yahoo! JAPANトップページの全機能をご利用いただくには、

     

    はい、文字列だけ取得・出力できました。

    html タグは一切残りません、べんり!

     

    $more 部分に html タグなんかを入れたいってときはこんな感じで。

    <?php
    $html = file_get_contents( 'http://www.yahoo.co.jp/' );
    $html = wp_trim_words( $html, 50, '…<a href="http://yahoo.co.jp">Yahoo はこちら</a>' );
    echo $html;
    ?>

     

    まとめ

    使い方次第で応用が効くので、抜粋の表示をオリジナルにしたい時や1行に収めてリストで色々出力したいときに使うといいかも。

     

  • WordPress 3.8 に更新したら管理画面のフォントが□になったという方へ。

    WordPress 3.8 に更新したら管理画面のフォントが□になったという方へ。

    WordPress 3.8、英語版がリリースされましたね。

     

    変更点は管理画面のテーマが大きいところです、そのあたりは他で色々解説されると思うので置いといて。

     

    張り切って 3.8 に更新して困ってるひと、いませんか

    これですこれ

    管理画面フォントが豆腐に
    管理画面フォントが豆腐に

     

    「WordPress のバグじゃないの!!」

    と考えるのは早計ですので解決しましょうか。

     

    フォントがちゃんと表示されない問題が起きる条件

    日本で WordPress を使ってらっしゃる方なら必ず入れているであろうプラグイン、wp-multibyte-patch が WordPress 3.8 にまだ対応していない、ってだけです。

     

    解決する方法

    日本語版 3.8 がリリースする際には問題なく使えると思います、それまでの暫定処置として。

    WordPressディレクトリ /wp-content/plugins/wp-multibyte-patch/ext/ja/admin.css を開く。

    開くと、こう記述されてるはずです。

    @charset "utf-8";
    
    body *:not(textarea) {
    	font-style: normal !important;
    	font-family: sans-serif !important;
    }

     

    5行目で font-family を全上書きしてしまってるため、WordPress 3.8 管理画面の Web font が反映されない、ってわけですね。

    ということで 5行目をコメントアウトすればオッケーです。

     

    @charset "utf-8";
    
    body *:not(textarea) {
    	font-style: normal !important;
    	/*font-family: sans-serif !important;*/
    }

     

    まとめ

    日本語版を待てばいいだけのことですので、大人しく日本語版を待ちましょう。

    MP6 プラグインを入れている人は、3.8 になったらちゃんと停止しましょう。

    ↑ 3.8 にしたら自動で停止してました。かしこい!

    2013.12.17 追記

    wp multibyte patch 1.9 で修正されていました

  • DNS prefetch を指定してサイトの表示(ソーシャルボタンとか)を速くする誰でもできる簡単な方法がこちら。(効果がないとの指摘アリ

    DNS prefetch を指定してサイトの表示(ソーシャルボタンとか)を速くする誰でもできる簡単な方法がこちら。(効果がないとの指摘アリ

    2013.11.23 追記

    誤った使い方であるという指摘がありました。

    一読の価値はあるかなと。Mozilla さんの書き方がよろしくないとも言及されてます。

    http://tech.no-delay.com/?p=694

    2013.12.05 追記

    上記サイトが閉鎖?されていました。

     

    テーマが少し一段落。

    出来得る限りの表示スピード改善も一段落。

    ということで表示速度を少しでも上げるための簡単な手段を一つ紹介。

    WordPress用のコードも載せてみます。では。結論が欲しいひとは一番下までワープしましょう。

     

    DNS prefetch というのがそれ

    DNS を先読みさせる仕組みのこと。

    DNS については Wikipedia を見ればいいと思うよ。

    DNS prefetch での効果はというとですね、(引用元: MOZILLA DEVELOPER NETWORK: DNS プリフェッチの制御

    DNS による名前解決に必要な帯域幅は小さなものですが、それにかかる時間は非常に大きく、特にモバイル環境では顕著なものとなります。予め名前解決を行っておくことで、例えばユーザーがリンクをクリックした際に、ページが表示されるまでの待ち時間を大きく削減することができ、場合によっては秒単位の効果が現れる場合もあります。

    特にモバイル環境においては、 DNS プリフェッチによりページの読み込みにかかる時間が劇的に改善されます。

    例えば、多数の画像が表示されるページにおいて、画像が要求される前に名前解決が行われている場合では読み込み時間が 5% 以上削減されるでしょう。

    Firefox ブラウザの Mozilla、曰く、です。

    これは実装するしか!(ぼくはずっと実装してます

     

    そんな DNS prefetch の効果を目で見てみようか

    挙動がわからないと本当に速くなるのかわかりませんね!

    ということで、DNS prefetch を有効にしたものとしなかったもので比べてみます。

    サンプルとして Facebook, Twitter, Google+, はてなブックマーク のソーシャルボタンを読み込むだけのペラサイトを作って オン/オフ時の挙動を計測してみます。

     

    計測に使用したサンプル

    当サイトトップページをURLに指定したソーシャルボタン4つを表示するだけの html。(見なくてもいいところです

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    
    	<title>デフォルト</title>
    
    </head>
    <body>
    <div id="fb-root"></div>
    <script>(function (d, s, id) {
    	var js, fjs = d.getElementsByTagName(s)[0];
    	if (d.getElementById(id)) return;
    	js = d.createElement(s);
    	js.id = id;
    	js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1";
    	fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));</script>
    <div class="fb-like" data-href="http://hayashikejinan.com" data-layout="button_count" data-action="like" data-show-faces="false" data-share="false"></div>
    
    <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://hayashikejinan.com">Tweet</a>
    <script>!function (d, s, id) {
    	var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https';
    	if (!d.getElementById(id)) {
    		js = d.createElement(s);
    		js.id = id;
    		js.src = p + '://platform.twitter.com/widgets.js';
    		fjs.parentNode.insertBefore(js, fjs);
    	}
    }(document, 'script', 'twitter-wjs');</script>
    
    <div class="g-plusone" data-size="medium" data-href="http://hayashikejinan.com"></div>
    <script type="text/javascript">
    	window.___gcfg = {lang: 'ja'};
    
    	(function () {
    		var po = document.createElement('script');
    		po.type = 'text/javascript';
    		po.src = 'https://apis.google.com/js/platform.js';
    		var s = document.getElementsByTagName('script')[0];
    		s.parentNode.insertBefore(po, s);
    	})();
    </script>
    
    <a href="http://b.hatena.ne.jp/entry/" class="hatena-bookmark-button" data-hatena-bookmark-layout="standard-balloon" data-hatena-bookmark-lang="ja" data-hatena-bookmark-url="http://hayashikejinan.com" title="このエントリーをはてなブックマークに追加"><img src="http://b.st-hatena.com/images/entry-button/[email protected]" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a>
    <script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8"></script>
    
    </body>
    </html>

     

    計測に使用したサイト

    WebPagetest というウェブサイトのパフォーマンス・最適化を計測できるサイトを使用。

    • Test Location…Tokyo
    • Browser…chrome

    で調べました。

     

    計測結果

    計測結果その1。

    読み込みが速いことが確認できます。

     

    計測結果その2。

    詳細を見てみるとわかりやすいです。

    プリフェッチを適用した際、 DNS lookup は事前に行われていることが視覚的に確認できますね!

     

    DNS prefetch の指定方法

    html <header></header> 内(<meta charset=UTF-8" /> の直後が望ましい)に1行

    <meta http-equiv="x-dns-prefetch-control" content="on">

    これで DNS preftch が有効化されます。

    prefetch したいドメインの指定は

    <link rel="dns-prefetch" href="//www.example.com">

    こういうカタチ、 href のところでスラッシュ2つの後にドメインを記述すればおkです。

    まぁ簡単。

     

    WordPress で DNS prefetch を実装するコード(簡単版

    header.php に書くのはあれなんで、functions.php に書きましょう。

    ヘッダーに関数をフックしてやればオッケーです。

    こんな感じで。

    /**
     * dns prefetch をヘッダーに書き出す関数
     */
    function dns_prefetch() {
    
    	// DNS prefetch を on にするタグを出力用変数に入れる
    	$output = '<meta http-equiv="x-dns-prefetch-control" content="on">' . "\n";
    
    	// prefetch するドメインを追加していく
    	$output .= '<link rel="dns-prefetch" href="//connect.facebook.net">' . "\n";
    	$output .= '<link rel="dns-prefetch" href="//s-static.ak.facebook.com">' . "\n";
    	$output .= '<link rel="dns-prefetch" href="//static.ak.fbcdn.net">' . "\n";
    	// ↑これを追加したいドメイン名だけ続ける
    
    	// 書き出し
    	echo $output;
    }
    // add_action( 'フック名', 'フックする関数名', 優先順位:今回は真っ先に実行したいので 1 を指定 )
    add_action( 'wp_head', 'dns_prefetch', 1 );

     

     

    WordPress で DNS prefetch を実装するコード(推奨

    簡単版ではひとつひとつ律儀に追加するわかりやすいコードを書きました。

    ただプログラミングとしては若干残念なのでプログラムっぽく書くのが望ましいです。

    ということでこれが推奨。

    サンプルコードでは各種ソーシャルボタンから呼ばれるドメインを指定しています。

    /**
     * dns prefetch をヘッダーに書き出す関数
     */
    function dns_prefetch() {
    
    	// DNS prefetch を on にするタグを出力用変数に入れる
    	$output = '<meta http-equiv="x-dns-prefetch-control" content="on">' . "\n";
    
    	// prefetch するドメインのタグひな形
    	$html    = '<link rel="dns-prefetch" href="//%s">' . "\n";
    	$domains = array(
    		// facebook
    		'connect.facebook.net', 's-static.ak.facebook.com', 'static.ak.fbcdn.net', 'static.ak.facebook.com', 'www.facebook.com',
    		// twitter
    		'cdn.api.twitter.com', 'p.twitter.com', 'platform.twitter.com', 'twitter.com',
    		// Google+
    		'apis.google.com', 'oauth.googleusercontent.com', 'ssl.gstatic.com',
    		// hatena bookmark
    		'api.b.st-hatena.com', 'b.hatena.ne.jp', 'b.st-hatena.com', 'cdn-ak.b.st-hatena.com', 'cdn.api.b.hatena.ne.jp',
    		// pocket
    		'd7x5nblzs94me.cloudfront.net', 'widgets.getpocket.com',
    		// pinterest
    		'assets.pinterest.com',
    		// WordPress
    		'stats.wordpress.com', 'i0.wp.com', 'i1.wp.com', 'i2.wp.com', 's0.wp.com',
    		// adsense
    		'googleads.g.doubleclick.net', 'pagead2.googlesyndication.com',
    		// analytics
    		'www.google-analytics.com'
    		// 追加する場合 ↓ 先頭の // を消して書き込む
    		//'', '', '', '', '', '', ''
    	);
    	// 上記 $domains 配列に入れたドメインをひな形 $html に入れ込み、ループで出力用変数に入れる
    	foreach ( $domains as $domain ) {
    		$output .= sprintf( $html, $domain );
    	}
    	// 書き出し
    	echo $output;
    }
    // add_action( 'フック名', 'フックする関数名', 優先順位:今回は真っ先に実行したいので 1 を指定 )
    add_action( 'wp_head', 'dns_prefetch', 1 );

     

    最後に、 DNS prefetch の対応状況

    残念ながら Internet Explorer は 10以降の対応です…残念ながら…

    他のブラウザはよっぽど古いバージョンで無い限り対応してます。

     

    ホホまとめ

    一番の高速化は良い速いサーバーを使うのが最善。

    とはいえ簡単なことでサイトの表示速度が上がるとうれしいですよねほんと。

    知識+環境で一つ上のサイト作りを目指したいところです。

  • コメント欄を生かしたいのでカスタマイズして、はてブコメントを自動で登録・アイコンも表示するようにしてみた!!

    コメント欄を生かしたいのでカスタマイズして、はてブコメントを自動で登録・アイコンも表示するようにしてみた!!

    WordPress のコメント欄、標準装備されてるにもかかわらずなかなかうまい使い方ができずにいました、います。

    コメント欄が盛り上がるような記事を書けばいいんですけどもそんなにぽんぽんコメントがつくほどのことを書けませんのでせめて、

    コメントがある感じを出したいなと思って

    「そうだ、はてブのコメントがついたコメントを統合してしまおう」

    ということで実装することに。

     

    実装できた

    2,3日(夜中にちまちまと)かかりましたけど満足のいく感じになりました。

    こんな感じ
    こんな感じ

     

    この記事この記事あたりがはてブコメント多いので見てもらえると。

     

    やったこと

    実装までにやった手順?やったこと?を箇条書きで

    • はてブコメントの取得は はてなブックマークエントリー情報取得API を使用
    • まずは特定の記事 URL からコメントを取得
    • 取得したコメントを書き込む関数をつくる
    • テーマ内に組み込んでローカル環境でテスト
    • コメント重複チェック、全ポストをバックグラウンドで実行させる実装
    • はてブのアイコンを表示するように
    • オレオレプラグイン化

    です。

     

    実装してよかった点

    そもそも実装した狙いがよかった点ってことになるんですけども、挙げてみます。

    ブログパーツを使うより表示がすこぶる速い

    公式でコメントや人気エントリーを取得するブログパーツはあるんですけども、カスタマイズ性がないのと外部 js を取得しにいくんで表示遅くなるんですよね。

    で、実装する気が起きなかったので関連記事も表示できる Zenback を入れてたんですけども、外せました。しめしめ。

     

    コメント欄の賑わいっぷりが増す

    もう見たまんま。

    「なんかこの人コメントいっぱい付いてる」

    って思わせることができたら勝ちだと思ってますええ。

     

    溢れるオリジナリティ

    コメント欄を弄るブログってあんまり見ない(個人的に)ため、アピールになるんじゃないかなーなんて。

     

    そもそもカスタマイズの腕が上がる

    いわゆるプログラムってやつですかね、たいしたことはやってないですけども、プログラムは言語なんで書けば書くほどうまくなる(考えながらね)のは間違いないです。

    WordPress わからないってひとは弄り倒せばいいと思うよ。

     

    ホホまとめ

    ガワばっかり注力して重要な記事を書けてないという…

    実装して悪かったことが一つもないのが素晴らしいと自分で自分を褒めつつ。

    コメント回りはやり出すとおもしろいです。