リリースされてないけど WordPress 4.0 対応(になるかもしれない)プラグインを作ってみた

インストール時の言語選択
インストール時の言語選択

WordPress 4.0 の beta1 が先日発表されましたね。beta1以降は、バグフィックスのみとなり、新しい機能などは盛り込まれないので、よほど致命的なバグがない限り、ほぼこのままということになるでしょう。

どこらへんが変わったかは、おでさんの「WordPress 4.0 ファーストプレビュー」を見てもらうとして、なんと言っても、表示言語をインストール時に選択することで、言語専用のパッケージが基本的に不要になる(残るのかな)ことが一番の変わった点だと思います。

これは、インストール時にインストールするバージョンに対応した翻訳ファイルのリストをオンラインで取得して表示し、選択した言語の翻訳ファイルをインストール時にダウンロードして適用するような仕組みになっています。

select-wplang

また、「一般設定」画面において、マルチサイトには以前から存在していた「サイトの言語」の選択がシングルインストールにおいても利用できるようになり、インストール済みの言語を選べるようになっています。

で、1つ気になったのが、せっかくオンラインから翻訳ファイルを入手する仕組みがあるのに、インストール時しか言語を入手するインターフェースがなさそうだということです。

幸い 4.0 をインストールする際に利用される wp-admin/setup-config.php には、翻訳ファイルの取得やインストール方法も書いてあったので、これを参考に管理画面から翻訳ファイルを追加できるプラグインを作ってみました。

https://github.com/jim912/WP-Language-Plus

wp-lang-plus

added-langs

追加したい言語にチェックを入れて、下部の Install ボタンをクリックすると、翻訳ファイルを追加できるようになっています。

StaticPress でリンク切れの場合はファイルを作らないようにする

一旦、空のファイルを作って、直後に消すようにするという方法です。

add_filter( 'StaticPress::put_content', 'empty_404_content', 10, 2 );
add_action( 'StaticPress::file_put'   , 'unlink_empty_static_file' );
function empty_404_content( $content, $code ) {
	if ( $code == 404 ) {
		$content = '';
	}
	return $content;
}


function unlink_empty_static_file( $file_dest ) {
	if ( file_exists( $file_dest ) && is_file( $file_dest ) && filesize( $file_dest ) === 0 && is_writable( $file_dest ) ) {
		unlink( $file_dest );
	}
}

WordPress3.9 でビジュアルエディターのブロック要素をカスタマイズする

3.8までは、配列のキー名が theme_advanced_blockformats でしたが、3.9からは、block_formats になり、指定の仕方も単なるカンマ区切りから、表示名=タグ という指定となり、セミコロン区切りに変わっています。
※ 指定値の最後にはセミコロンは不要です。

function custom_editor_settings( $initArray ) {
	$initArray['block_formats'] = 'Paragraph=p;Address=address;Pre=pre;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6';
	return $initArray;
}
add_filter( 'tiny_mce_before_init', 'custom_editor_settings' );

wp39-tinymce-block_formats

WordPressの管理画面とログイン画面にBasic認証を適用する.htaccessの記述

wp-login.php と wp-admin ディレクトリ以下を制限する。ただし、wp-admin/admin-ajax.php は 、プラグインで Ajax を利用する場合にアクセスされる可能性があり、除外する必要がある。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

AuthUserFile	/path/to/.htpasswd
AuthName	"Input Your Name And Password"
AuthType	Basic

<Files wp-login.php>
require	valid-user
</Files>

<FilesMatch "\/?wp-admin">
require	valid-user
</FilesMatch>

<Files wp-admin/admin-ajax.php>
Satisfy any
order allow,deny
allow from all
</Files>

あ、マルチサイトは試してないからね

SaCSS with WordBench Sapporo, Late2013 参加レポート

sacss-late2013-title

12月14日、札幌で開催された「SaCSS with WordBench Sapporo,Late2013」に参加、登壇して来たので、その時のことを振り返って見たいと思います。

まず、SaCSS ですが、公式サイトにもあるように

『SaCSS(サックス)』は札幌で主にコーダー(マークアップエンジニア)やWebデザイナー向けに、HTMLやCSS、JavaScriptなどフロントエンドの内容を中心に、ほぼ毎月セミナー・勉強会を開催している団体です。

SaCSSは「Sapporo.CSS」もしくは「Sapporo Coding Study & Seminar」を省略した形で、参加者に「サックス」の愛称でよばれております。

と、フロントエンド寄りのWeb系技術セミナーであり、札幌のWeb制作者のコミュニティー形成のような役割も担っている感じです。(違ってたらゴメンなさい)

今回の「SaCSS with WordBench Sapporo,Late2013」の前週にも、「SaCSS Special4 Frontrend in Sapporo」なども開催したり、WordCamp Tokyo 2012 にブース出展もしてくれたり、OSCにも参加するなど、非常に活動が盛んなことも特徴のひとつですね。

個人的には、Vol.24 に参加して以来、毎年1度はおじゃましていて通算3回目の参加となります。

まさか、ここに戻ってこようとは。。
出発直後の窓から。

さて、そんな札幌行きですが、いきなりのトラブル。
定時より少々遅れて飛び立ったフライトですが、青森上空で新千歳空港除雪作業のため、待機するというアナウンスが、そして、待てども待てども着陸できず、結局、燃料不足のため、3時間以上飛び回ったあげくに成田空港に引き返すということに。

天候次第では、北海道行き自体を諦めなければならないかもとも思いましたが、翌日は天候も持ち直し、なんとか確保した羽田発の便で無事行くことができました。

後から得た情報だと、13日の札幌は、雪で自動車の前が見えなくなるほどの大雪だったそうで、それなら飛行機が飛ばないのも致し方ないのかもですね。

WordPressの表示ロジックを理解する Extends
WordPressの表示ロジックを理解する Extends

セミナーでは、「WordPressの表示ロジックを理解する Extends」という内容でお話させていただきました。
この話は、手を変え品を変えで何度も話している内容なのですが、案件レベルでWordPressを扱う際には、是非身につけていただきたい内容です。原理や仕組みを理解することによって、カスタマイズしたい場合は、どこを変更すれば良いか、思い通りに動かない場合は、どこをチェックすれば良いかの見当がつくようになり、課題や問題を早期に解決できるようになるはずです。

WordPressの教科書2とWordPressデザインのメソッドを参加者プレゼント
WordPressの教科書2とWordPressデザインのメソッドを参加者プレゼント

翌日は、バスツアーで支笏湖へ

20131215_112031_original

4G5A3044_original

お世話になりっぱなしでしたが、楽しい2日間を過ごすことができました。本当に、ありがとうございます。

また、来年にも行きたいですな。

20131214_144314

4G5A2957

4G5A2959