カテゴリー: WordPress

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

  • WordPressの関数をちょっと試したいときにWordPress外のPHPから使うための小技

    WordPressの関数をちょっと試したいときにWordPress外のPHPから使うための小技

    WordPressでなんやらかんやら試したいときにテーマファイルに直接書きこんでむちゃくちゃになることってないですか。ないですよね。ですよねー。

    関数とか出力とかをちょっと試したいなーと思うことが多くなってきて、調べてみました。

    やりたいことは、「WordPress外からWordPressの関数を使って出力すること」です。

     

    というわけでおなじみ Codex

    探してみました。あるもんですねぇ。

    さっと読んでから試してみました。注意点はこちら

    • マルチサイトではできない
    • 別ドメインではできない

    です。ローカルホストならローカルホスト内でどこでもいけますね。

     

    やってみましょう

    ※ちなみにぼくの環境では localhost/www/wp にWordPressをインストールしています。

    環境に合わせてパスは適宜置き換えてください。

     

    1, まずはphpファイルを作成

    localhost/www/test.php ってのを作ってみます。

    localhost/www/test.php
    localhost/www/test.php

     

    2, WordPressのヘッダーを require でインクルードする

    Codex には2つ書いてあります、どっちでもいいよ!っとのことなのでスイートなほうを。

    <?php
    /* 短くて素敵 */
    define('WP_USE_THEMES', false);
    // WordPressフォルダ直下の wp-blog-header.php をインクルード
    require('./wp/wp-blog-header.php');
    ?>

    これで準備おっけー。なんとお手軽…!

     

    3, WordPress 関数を使ってみる

    ちょー簡単に、WordPressのバージョンを出力してみます。

    <?php
    /* 短くて素敵 */
    define('WP_USE_THEMES', false);
    // WordPressフォルダ直下の wp-blog-header.php をインクルード
    require('./wp/wp-blog-header.php');
    ?>
    <!-- WordPressのバージョンを出力 -->
    <?php echo $wp_version; ?>

    すると、おお!出ました。

    wp_version
    でた

    これだけです。

    投稿の出力も普通にできました。

     

    ホホまとめ

    これは頗る便利ですね、最近真面目にWordPressを始めたので知らないことばかりで毎日楽しいです。

    test用のphpを作ってよく使うコードを書いておけばしゅっとチェックしたりできますね。

    サーバーに管理用のコードを置いておけばめんどうなことをせず色々できそう!

  • WordPressのプラグインを作ってみる。まずは簡単なプラグインの作り方。

    WordPressのプラグインを作ってみる。まずは簡単なプラグインの作り方。

    以前記事を書いた Transients APIを使って各ソーシャルのカウント数をWordPressデータベース内に一時保存&表示するのよ! をいくつかのサイトで使おうと思い、各々のテーマファイルに同じ記述をしました。

    近頃プラグイン離れをしてまして、自分で書けるものは自分で書こうがテーマなんです。

    プラグインやめる→自分で書く!→あれ…プラグイン化したほうがメンテナンス性よくない?

     

    と思考が至って、WordPressプラグイン作成に着手。

    自分で使う用なのでまずは配布を考えず作ろうと。

     

    プラグインの作りかた

    最近ぼくの中で大ブレイク中のWordPress Codexを見る。

    見たらわかるよね!さて、手順をメモしつつ作りますよ。

     

    1, プラグイン用のファイルを文字コードUTF-8で作成

    wordpressディレクトリ/wp-content/plugins/ 以下に任意の名前でphpファイルを作る。

    phpファイル作成
    phpファイル作成

     

    2, プラグインファイルのヘッダー情報を打ち込む

    プラグインのヘッダー情報は Plugin Name だけあれば動くんだってさ。

    とりあえずこういう形で書き込む。

    <?php
    /*
    Plugin Name: <プラグイン名>
    Plugin URI: <プラグインのURL>
    Description: <プラグインの説明>
    Version: 1.0 <プラグインのバージョン>
    Author: <プラグインの作者名>
    Author URI: <プラグインのの作者URL>
    License: <ライセンス形式>
    */
    ?>

     

    3, プラグインの処理を記述

    プラグインヘッダー情報を書けたら後は処理。

    プラグインならではの関数とかは色々ありますけども、基本的にテーマファイルの functions.php に書いていく感じでちゃちゃっと書いていけばおk。

    …とは言ってもこれだけじゃあなんのことかわからんのでサンプルを作ってみる。

    はてなブックマークの “自分のブログに被ブックマーク数を表示する”

    を使って、抜粋の関数 (the_excerpt) をフックし、抜粋の前にはてブ数を表示するプラグインを作ってみる。

    まずはプラグインヘッダー。

    <?php
    /*
    Plugin Name: First Plugin
    Plugin URI: なし
    Description: 抜粋の後にはてブ数を表示させるプラグインだよ!
    Version: 1.0
    Author: hayashikejinan
    Author URI: http://hayashikejinan.com
    License: GPL2
    */
    ?>

    次に処理部分。

    <?php
    /**
     * the_excerpt をフックして抜粋の前にはてブ数を表示。
     *
     * @param $except
     *
     * @return string
     */
    function hatena( $except ) {
    	// 抜粋ごとの記事リンクではてブ数をうんちゃら
    	return '
    	<a class="hatena-users" rel="nofollow" target="_blank" href="http://api.b.st-hatena.com/entry/' . get_permalink() . '">
    	<img border="0" src="http://api.b.st-hatena.com/entry/image/' . get_permalink() . '" alt=""/>
    	</a>' . $except;// 抜粋の前に入れる
    }
    
    // the_excerpt アクションフック
    add_action( 'the_excerpt', 'hatena' );
    
    ?>

    これだけで( `д´)b オッケー!

     

    4, 有効化して確認してみようか

    作ったサンプルプラグインをブログにインストールし、プラグインメニューで有効化。

    表示はこんな感じ。有効化を押そうね!
    表示はこんな感じ。有効化を押そうね!

     

    有効化前後のビフォーアフターで比べてみましょう。

    ビフォーねこれ。
    ビフォーねこれ。

     

    アフター。はてブ数がちゃんと抜粋の前に出たよ!やったね!
    アフター。はてブ数がちゃんと抜粋の前に出たよ!やったね!

     

    とまぁこんな感じであっさりできました。

     

    ホホまとめ

    「んー…この処理は色んなところで使えそうだのう」みたいなことがあるのでプラグインを作り始めました。

    とっかかりはまぁなんでもいいんですけども、最大の目標である脱プラグインをするためにプラグインを作るというわけのわからないことに。

    自分で使うものだったら設定画面なんていらないから楽ちんですね。

    ちょいちょい作りたいプラグイン進めていこうと思ってます。

    あ、今回作ったサンプルのプラグインしょうもないですけど一応置いときますねー。

  • Transients APIを使って各ソーシャルのカウント数をWordPressデータベース内に一時保存&表示するのよ!

    Transients APIを使って各ソーシャルのカウント数をWordPressデータベース内に一時保存&表示するのよ!

    最近流行ってるっぽいこんなの、つけたかったんですよね。↓

    ソーシャルのカウントねこれ
    ソーシャルのカウントねこれ

    一覧でカウント数出てるとほら、訴えるモノがあるじゃないですか。

    カウント数少なかったらちょっとしょんぼりできますけどね。

     

    ローカルで試してみたはいいものの

    毎回各APIにJSONリクエスト送って取得した値を表示するっていうことをしてたんで表示がどえらい遅くなりました。

    これじゃあいかんね、っということでちょっと考えてみることに。

     

    作戦その1 データベースに一定時間毎書き込む

    バックグラウンドでpostIDごとにソーシャルボタン押された回数を全部攫って記録したものを呼び出す的なことを考える。

    実装面でめんどいいいので却下。

     

    作戦その2 キャッシュ使えば良いんじゃないの?

    WordPressのCodexで使えそうな関数を探してみることに。

    ふむ。まさにキャッシュ。

    ちょっと使ってみるもなんか違う。

    ちゃんと読んでみたらば、デフォルトだとオブジェクトキャッシュは非永続的で、キャッシュに格納されたデータはメモリ上だけ。セッション間のみでしか存在しない。だと…?

    ちょっと挙動を変えてやらんと使えないねこりゃあ…ということでまた探す。

     

    作戦その3 ええの見つけた!

    Codexでそれっぽい単語調べてると良さげな関数が。

    データに名前と有効期限を設定して、データベース内に保存する関数。

    Transients API は Options API に似てるけども、有効期限という機能を使うことで wp_options テーブルをデータ保存用に使うことを可能にします。

    これよこれ、求めてたのは!

     

    Transients APIの使い方

    調子のって使い方とか書いてますが初めて使いますよ(´∀`)

     

    Transients API

    Transients APIのデータ保存先はデータベースの options

     

    関数

    set_transient( $transient, $value, $expiration ); でデータをセット。

    • $transient…キャッシュデータのユニークID。String型。
    • $value…保存するデータ。変数でも配列でもオブジェクトでもいける。
    • $expiration…データを更新するまでの有効期限(秒)。デフォルトは0。int型。

    get_transient($transient); でデータ取得。set_transient で使った $transient で取得。

    delete_transient($transient); 手動でデータ削除するときの関数。

     

    Transients API を実装してみる

    というわけで実装。

    やりたいことは

    1. 各ソーシャルのカウントを取得
    2. 取得したカウント数がない場合一時保存
    3. 一時保存のカウント数を出力

    ですな。個々のAPIを使った例を出すとややこしくなるので、今回は簡単に取得できる SharedCount

    というサービスを使ったサンプルコードを記。

    /**
     * SharedCount を使ってソーシャルのカウントを取得
     * Transientで保存。
     *
     * 出力例(ループ内がいいよ): <?php social_counts(); ?>
     */
    function social_counts() {
    	// Transient データを取得
    	if ( false === ( $social_counts = get_transient( 'social_counts_' . get_the_ID() ) ) ) {
    		// Transient が存在しない場合、コード実行
    		$url    = get_permalink();
    		$json   = file_get_contents( 'http://api.sharedcount.com/?url=' . rawurlencode( $url ) );
    		$counts = json_decode( $json, true );
    
    		// 配列にカウント格納
    		$social_counts = array(
    			$counts["Twitter"],
    			$counts["Facebook"]["total_count"],
    			$counts["GooglePlusOne"],
    		);
    		/*
    		 * Transient の値を設定。
    		 *
    		 * キャッシュデータのユニークIDは「 social_counts_(投稿IDの数字) 」
    		 * 先頭に _transient_ が自動付加される。
    		 */
    		set_transient( 'social_counts_' . get_the_ID(), $social_counts, 60 * 60 * 4 ); //=4時間 重いと思ったら増やせばいいよ
    	}
    
    	// $social_counts 出力
    	echo '
    <p class="sns">
    	<span class="tw">' . $social_counts[0] . '</span>
    	<span class="fb">' . $social_counts[1] . '</span>
    	<span class="gp">' . $social_counts[2] . '</span>
    </p>
    	';
    }

    上記コードを functions.php にでも貼り付けてあとはループ内に

    <?php social_counts(); ?>

    って書けば( `д´)b オッケー!

    cssはてきとうに書いてください。

    データベースにはこんな感じで格納されてますよ。

    Transients_SharedCount_db_example

     

     

    ホホまとめ

    久しぶりにブログを書く元気が出てわりとしっかり調べて実装できたので満足。

    できる人は公式APIから各JSONを取得するのがいいと思うよ!

    SharedCount だとはてブのカウント取れないしね。

    興味ある人は試してみるとおもしろいよ。

    自分で色々考えるのは楽しいすな。これを Cron でバックグラウンドにすれば完璧っぽい。

    そのまま実装したら重いかもね。

  • wordpress使ってはる企業さんのサイトを集めてみようと思ったので

    wordpress使ってはる企業さんのサイトを集めてみようと思ったので

    まとめてみたよ。

    わりかし色んなところで紹介されてるような企業さんは省いてるつもりだよ!

    企業で使ってるところは何かと参考になると思うんです、中には定番のプラグインを使ってらっしゃるサイトがあったりして興味深かった!

     

    SONY mobile developer world

    Developer World_developer.sonymobile.com

    アクセス速いしSONYっぽいし、これはクローン作りたくなるぐらい。

    wordpressっぽくなくっていいね。ブログ寄りではある。

    クックパッド株式会社

    クックパッド株式会社_info.cookpad.com

    クックパッドは有名ですかね(;´∀`) wordpressを完全に企業サイトとして運営してらっしゃる。

    ちょっと古めのwordpressを使ってるあたり、コアに手を入れてるのかも。

     

    日本すっぴん協会

    日本すっぴん協会_suppin.info

    企業サイト…ではないですかね。ただまぁ…いいよね、ここ

    淡いピンク色をベースにしてるのはぼくの心を刺激してやまない。すっぴん云々はどうでもいい

     

    AMZ(アムズ) JR千葉駅から徒歩6分のシェアワークスペース

    AMZ(アムズ)JR千葉駅から徒歩6分のシェアワークスペース_amz-space.com

    千葉のオシャレなシェアワークスペースさんのサイト、しゅっとしてていいね。

    まとめ

    インターネットでたまたま目にして、「あ、ここwordpress使ってるんや~」とぼくがブックマークしていたサイトでした。

    他にも探せば大学や海外のサイトでwordpress使ってるところがいっぱいあるんじゃないかな。

    「ここもやで!」

    みたいなのがあればコメントしてみてくださいね。 (こんなの書いてる時間があったらそもそも自分のブログテーマをちゃんと作らないといけないんじゃないか)

  • Twenty Thirteen WordPress テーマがコミットされてましたので使てみた。

    Twenty Thirteen WordPress テーマがコミットされてましたので使てみた。

    タイトルが誤字っぽいですが、”つこてみた” と読んでいただく形になります(かんさいべん

    wordpressのgitをクローンしてローカルで最新版をうれしそうにいつも遊んでいるぼくです。

    いつものようにpullしてみると新しくテーマが追加されていました。

     

    Twenty Twelve → Twenty Thirteen と来てるのでこれからは毎年テーマが増えていくんでしょうかね?(要確認ぼく

    とりあえずローカルで試してみましたよっと。

    外観

    トップページはこんな感じ。ポップでいいね。

    twentythirteen_top

     

     

    コンテンツ下~フッター付近はこんな感じ。

    twentythirteen_footer

     

     

    投稿画面

    投稿フォーマットが充実。

    twentythirteen_post-format

     

     

    ウィジェット

    ウィジェットはサイドバーとフッターの2つ使える。

    twentythirteen_widget

     

    レスポンシブも対応

    480×800画面で見るとこんな感じです。

     

    まとめ

    まだプロジェクト自体始まったばかりなので、翻訳ファイルは入ってません。

    メニューはヘッダーに1つ。

    スクロールで上部にタイトル&検索バーが追従してきます。

     

    新しいもの試してみたい方はどうぞ。

    Twenty Thirteen v0.1

  • All-in-One Event Calendar 日本語化。

    All-in-One Event Calendar 日本語化。

    WordPress にイベント管理のオプションを追加できるカレンダープラグイン。

    ぼくはこのプラグインを某非営利団体のイベントスケジュールとして使ってます。

    便利で使いやすいプラグイン。

    更新も頻繁に行われてますので一度使ってみてはいかがでしょう。

    All-in-One Event Calendar Plugin 日本語ファイル

    ファイルをプラグインのlanguageディレクトリに入れればOKです。

    v1.9.2に対応。

    一応普通に使えるはず程度の40%ちょっとしか翻訳してません(´∀`)

  • GTmetrixでサイトの診断してみたんですよ。

    GTmetrixでサイトの診断してみたんですよ。

    全然記事書いてませんがまぁとりあえず、GTmetrixでパフォーマンス診断してみましたよ。

    GTmetrix | Website Speed and Performance Optimization
    GTmetrix can help you develop a faster, more efficient, and all-around improved website experience f …
    GTmetrix can help you develop a faster, more efficient, and all-around improved website experience for your users. Your users will love you for it.

     

    Google謹製ツールのPage SpeedとYahoo!謹製ツールのYSlowでランク診断してくれる。

    Latest Performance Report for- http---hayashikejinan.com-  GTmetrix

    ソーシャルボタン5種(FB, TW, G+, はてブ, Pinterest)を設置し、とりあえずできる限り速くしてみたつもり。なかなかよい。

    しばらくはこの簡素なままでいっか。

  • WordPressSEOプラグイン日本語化ファイル(40%)

    WordPressSEOプラグイン日本語化ファイル(40%)

    以前はAll in One SEO Packを使っていたんですけども、WordPress SEOを使ってみたところどう考えても後者のほうが設定多いし使える!

    っということで乗り換え。

    wordpress pluginからのインストールでは日本語があんまり反映されてないので翻訳してみた。

    ただ量が多すぎてとりあえず挫折しているところ。

    そのうちちゃんと解説&日本語化しようと思っているよ。

    ちゃんとできたら公式に入れてもらうようにします。

    日本語化は wordpress-seo-ja.mo をダウンロードして、プラグインlanguagesディレクトリに上書きでおk。

    タイトル & Meta ‹ ローカルWP — WordPress