iPhone 4 とモバイルキーボード「リュウド RBK-2000BT3」を使用し、
iPhone用の WordPressのアプリからブログ記事を投稿する際、
パーマリンクに日本語が入ってしまうというという問題の解決策として、プラグインを入れる事にしました。

投稿画面

現時点での iPhone 用のWordPressアプリの投稿画面には、
パーマリンクを手動で入力する欄がありません。

通常 WordPressは、タイトルに入力した文字列を勝手に拾ってパーマリンクに設定しますが、
タイトルに日本語が入っているとパーマリンクに日本語が入ってしまい・・

URLに含まれる日本語は、ブラウザによってはエンコードが行われますので、
非常に長い、しかもよくわからないURLになってしまいます。

【例】

タイトル:iPhone 4でブログを更新します(リュウド RBK-2000BT3使用)
パーマリンク:http://ykr.ykr414.com/2011/04/18/iphone-4でブログを更新します(リュウド-rbk-2000bt3使用)

エンコードされるとこうなる↓

http://ykr.ykr414.com/2011/04/18/iphone-4%E3%81%A7%E3%83%96%E3%83%AD%E3%82%B0%E3%
82%92%E6%9B%B4%E6%96%B0%E3%81%97%E3%81%BE%E3%81%99%EF%BC%88%E3%83%AA%E3%83%A5%E3%82
%A6%E3%83%89-rbk-2000bt3%E4%BD%BF%E7%94%A8%EF%BC%89

PCからの更新であれば、一旦は日本語が設定されても、記事公開前に再度手動で設定しなおせば済みます。

ですが iPhone から投稿する記事のタイトルに日本語が入る場合、パーマリンクを編集できないので
どうしてもURLに日本語が混じってしまうのを避ける事が出来ません。

なので、日本語を投稿スラッグに設定しなくなるようなプラグインを・・
という事で設定してみました。


まず、以下のコードをテキストエディタ(EUC-JP や UTF-8 を扱えるエディタ)にコピーします。

プラグインのコード

<?php
/*
* Plugin Name: permalink-wp
* */
add_filter('sanitize_title','sanitize_title_numalpha_only',9);
function sanitize_title_numalpha_only($title) {
return preg_replace('/[^%a-zA-Z0-9 \(\)_-]/', '-', $title);
}
?>

上記のコードをコピーしたファイルを、適当な名前をつけて保存(拡張子.php)します。



permalink-wp.php

ここでは「permalink-wp.php」と設定しました。



pluginsディレクトリ

そのファイルをサーバー上(wp-content/plugins)へアップロード。



プラグイン管理画面

その後、WordPressのプラグイン管理画面より「permalink-wp.php」を有効化するだけでOK。


実際の動作は、記事投稿時に設定した記事タイトルより、
「a~z」「A~Z」「0~9」「,」「_」のみを取得し、パーマリンクに設定します。

もしも記事タイトルが日本語のみであった場合には、投稿IDをURLとして設定。

また、自動で文字と文字の間をハイフンで繋いだり、
既に過去記事に同じパーマリンクが存在していた場合には、自動で連番の数字を語尾に付加します。
が、これら(ハイフンと連番)は既に自分のサイトでは実装されています。



上記のプラグインを有効化した上で、冒頭に例としてあげたタイトルを設定してみると・・

【プラグイン有効後の例】

タイトル:iPhone 4でブログを更新します(リュウド RBK-2000BT3使用)
パーマリンク:http://ykr.ykr414.com/2011/04/18/iphone-4-rbk-2000bt3/

このように自動設定されるようになりました。


これで、iPhone 4 から投稿した記事のURLが英数字のみになるのかは分かりませんが、多分出来るでしょう。

また時間のあるときにでもためしてみたいと思います。
色々面倒ですけど、iPhone 4 は面白いです。