コマンドラインから WordPress を操作する wp-cli 初級編

WordPress 3.6.1 が出たので、記念に wp-cli の紹介。(なんの記念だ)
wp-cli は、WordPress への各種の操作(本体のインストール・アップデートから plugin、theme のインストール・アップデートまで、すべてのことが!)をコマンドラインから行えるようにするツールです。

# curl https://raw.github.com/wp-cli/wp-cli.github.com/master/installer.sh | bash

これだけで ~/.wp-cli/bin/wp というコマンドが使えるようになります。
wp-cli が正常にインストールできたか確認するには、以下のコマンドで確認できます。

# ~/.wp-cli/bin/wp --info
PHP binary:	/usr/bin/php
PHP version:	5.4.19
php.ini used:	/etc/php.ini
WP-CLI root:	/root/.wp-cli/vendor/wp-cli/wp-cli
WP-CLI config:	
WP-CLI version:	0.11.2

インストール後にディレクトリ名つけないで使えるように .bash_profile 等を修正して PATH を通してあげてください。

PATH=${PATH}:${HOME}/.wp-cli/bin

続きを読む

WordPress フィードで pre_get_posts の posts_per_page は使えない

タイトルで言い切ってますが
WordPress のフィードで表示件数をダッシュボードで入力された値では無く、他の値に変更しようとしてハマったのでシェア。

通常 WordPress で表示件数を変更する場合は、pre_get_posts アクションフックを使って以下のように posts_per_page オプションを指定してやります。
codex にも書いてあるので、これで安心のはずです。

<?php
function my_pre_get_posts( $query ) {
    if ( is_admin() || ! $query->is_main_query() )
        return;

    if ( is_home() ) {
        // Display only 1 post for the original blog archive
        $query->set( 'posts_per_page', 1 );
    }
}
add_action( 'pre_get_posts', 'my_pre_get_posts', 1 );

これをフィードの時にのみ変更しようとして、以下のようなコードを書いたけど、期待通りに表示件数が変更されませんでした。

<?php
function my_pre_get_posts_for_feed( $query ) {
    if ( is_admin() || ! $query->is_main_query() )
        return;

    if ( is_feed() ) {
        // Display 50 posts for the feed
        $query->set( 'posts_per_page', 50 );
    }
}
add_action( 'pre_get_posts', 'my_pre_get_posts_for_feed', 1 );

続きを読む

「Fatal error: Call-time pass-by-reference has been removed」の対処

PHP 5.4 にアップデートした際に古いバージョンの WP Multibyte Patch を使っていると、以下のようなエラーが表示されることがあります。

Fatal error: Call-time pass-by-reference has been removed in /path/to/wordpress/wp-content/plugins/wp-multibyte-patch/ext/ja/class.php on line 74

このエラーの対処法について説明します。

ちなみに最新バージョンの WP Multibyte Patch では、このエラーは発生しないのでアップデートすれば良いだけなのですが、「対処しないと WP のダッシュボードに入れないんよ」っていう人を想定して書いてます。
# まぁ、最新の WP Multibyte Patch をダウンロードして、上書きしてやればいいだけですが
# あと、他のプラグイン・テーマでも、このエラーが発する可能性がありますし
続きを読む

WordPress で二段階認証を可能にするプラグイン「魍魎」

魍魎WordPress で、メールまたは SMS でワンタイムパスワードを発行して二段階認証ができるようにするプラグイン「魍魎」を公開しました。
絡新婦」「狂骨」に続く、日本の妖怪シリーズ第三弾です。
現在、公式プラグインディレクトリに申請中ですので、気になる方は github のリポジトリから取得してください。
https://github.com/wokamoto/spirits-and-goblins

追記: 2013-06-24
WordPress 公式プラグインディレクトリでも公開しました。
Spirits and Goblins

インストールして有効化すると、通常のログイン後にユーザのメールアドレス宛に送信されたワンタイムパスワードを入力しないとダッシュボードに入れなくなります。
送信オプションとしてはメールと SMS (ショートメッセージ) が選択できます。
「ショートメッセージ」を使用するには Twilio への登録を行い、設定画面で「Twilio sid」「Twilio token」「Twilio phone number」を取得する必要があります。
KDDI 版 Twilio は、日本語化されててとても嬉しいのですが、残念ながらまだ SMS に対応していないので注意してください。早く対応してくれないかなー。
また、ユーザープロフィール画面に追加される「国」と「携帯電話番号」欄にも登録してください。
続きを読む

Brute force attack との戦い – その2

ログイン履歴を保存できるプラグイン「狂骨」をインストールした知人から、こんな話がありました。
「管理者アカウントを admin 以外にしていて、author リンクとかはサイトに一切表示していないのにそのアカウントへのアタックが観測されるんだけど

原因が良くわからなかったのですが WordCamp Kobe 2013 の懇親会での LT で謎が解けました。
要約すると
「WordPress では /?author={user_id} にアクセスすることで、著者アーカイブにリダイレクトされる。
 その URL からログインユーザ名を取得することが可能。
 通常最初に追加されるユーザのユーザ ID は 1 なので、攻撃者は /?author=1 に対してリクエストしてくる。」
ってことです。

そんなわけで、気持ち悪い人は以下のようなプラグインを使用して著者アーカイブのスラッグ自体を変更してあげましょう。

他の対処法としては、みやさんが作ったプラグイン「Force email login」でログインユーザ名ではなく、登録されたメールアドレスでログインするようにする方法も有効ですね。

以下に「Edit Author Slug」の設定方法を説明します。
続きを読む

WordCamp Kobe 2013 へ行ってきました

2013年6月15日に開催された WordCamp Kobe 2013 に行ってきました。
僕は、小賀さんと一緒に「AWSを利用したエンタープライズ向けWordPress環境の構築と運用」ってセッションで話してきました。
今回は、国内 WordCamp 連続出席記録を持つおでこんが居なくて残念。
おでこん、来てると思ってたよ
すいません、写真あんまり取ってないです。

2013-06-16-09.01.01-320x214.jpg
まずは、限定でチャリティ販売されていたレアシールをゲット。
これで僕もワードプレスマスターだぜ!

2013-06-15-10.38.55-320x214.jpg
安定の直さんによる基調講演で幕開け、ぶれないっすな。
続きを読む

WordPress サイトを静的 HTML に変換するプラグイン StaticPress

実は WordPress サイトを静的 HTML に変換するプラグイン StaticPress をリリースしていました。
ダウンロードは、WordPress 公式プラグインディレクトリからお願いします。
WordPress › StaticPress « WordPress Plugins

このプラグインを使用することで WordPress で作成されたサイトを丸ごと静的ファイルに変換することができます。
また、変換時にサイトのパーマリンク構造を変換することができるため、http://wp.example.com/ というオリジナルサイトを http://www.example.com/static/ というサイトとして公開するための html を作成することも可能です。
完全に静的ファイルを作成するため、コメントやサイト内検索・コンタクトフォームの設置などはできません。
それらについては Disqus や Facebook コメント、Google カスタムサーチ・Google フォームなどで代替するようにサイト設計してください。

残念ながら、現状では Windows 環境に対応できていません。
github でソースを公開しているので、修正して pull request 送ってくれたりすると私が喜びます。
https://github.com/megumiteam/staticpress

Facebook ページなんかもあるので、よろしければ「いいね!」してくださいね。
https://www.facebook.com/StaticPress

あと、私が在籍している digitalcube では higanworks と合同で AWS OpsWorks を利用した自動化ソリューションを提供するサービス Opsrock.in を開始しました。
そこでは、StaticPress で生成した HTML を OpsWorks の StaticWeb レイヤにデプロイするソリューション等も提供して行きますので、こちらもご参照ください。
StaticPress × OpsWorks

以下、簡単な使い方など
続きを読む

Brute force attack との戦い

先般リリースした WordPress プラグイン「Crazy Bone (狂骨)」で、ブルートフォースアタックのログを見て、もろもろ設定変更したので、メモ代わりに。

特徴として、非常に多くの IP アドレスからのアタックがあるため、ブラックリストでの IP アドレス制限は現実的ではありません。
IP アドレス制限を行うなら、ホワイトリストでの制限をかけないとですが、それをやると出先でブログを書こうとかするとメンドくさいです。
そこで、以下の対策を行いました。

  • 狙われやすいアカウント名でのログイン試行は、WordPress 読み込み前に拒否
  • ユーザーエージェントでの wp-login.php へのアクセス制限

続きを読む

木内酒造でビール仕込んできました

日本で唯一、ビール仕込みまでの行程を体験できる常陸野ネストビールの
手造りビール工房
で、ビールを仕込んできました。
常陸野ネストビールのスタッフにサポートしてもらいながら、半日ほどの行程でビールの仕込みができる手造りビール工房、おすすめです!
僕らができるのは、スタイルの選定 → 酵母添加までです。これ以降の発酵・熟成、ボトリングは常陸野ネストビールさんがやってくれるとのことで安心です。

お値段は大体ビール一本辺り600円くらいになります。
僕らは、およそ75本のビールができる25Lコースで、ホワイトエールを仕込んできました。
アルコール度高め(8%)でお願いしたので、完成は6週間後くらいになるとのこと、出来上がりが楽しみです。

詳しいことは、一緒に行ったカイさんが、ブログにまとめてくれてるので、そちらもあわせてどうぞ!
自分好みのオリジナル地ビールを作りつつおいしい地ビールも味わえる木内酒造の「手造りビール工房」はビール好きに全力でオススメ – カイ士伝
続きを読む

WordPress 10th Aniversary

WordPress 10 周年ということで dogmap.jp のヘッダ画像を期間限定で変更してみました。
テーマ Twenty Twelve を使ってる場合は、Jetpack プラグインのカスタムCSS編集で簡単に変更できます。
レシピを gist に置いておきますね。

url("/path/to/wp-10th-aniversary.png") の所は、WordPress 10th Aniversary ヘッダを保存した URL に書き換えてやってください。