それは、どういうものですか?
WordPressのURLとして使われる投稿スラッグ。これは、標準だと投稿タイトルをURLエンコードしたものが自動的に使われて、やけに長くなるしかっこ悪い。
んで、ぼくは投稿タイトルを逐一英訳して投稿スラッグとして入力しているんだけど、ボキャ貧なので通じるかどうかわからない怪しげな英語になってしまう ><
そこで、自動的に投稿タイトルを英訳してくれて、それが投稿スラッグになってくれると素敵だなと思い、Wordpressのプラグインを作ってみました。
インストール方法と使い方
<?php /* Plugin Name: Slug translate J to E Plugin URI: http://creco.net/ Description: 投稿タイトルの日本語をそのまま投稿スラッグにするのではなく、Google AJAX Language APIで英訳したものを投稿スラッグにします Author: Shintaro Inagaki Version: 1.0 Author URI: http://creco.net/ */ function slug_translate_j_to_e($title) { $translateApiUrl = 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q='.urlencode($title).'&langpair=ja%7Cen'; $response = file_get_contents($translateApiUrl); $parsedJson = json_decode($response); if(isset($parsedJson->responseData->translatedText)) { $title = $parsedJson->responseData->translatedText; } $title = strtolower($title); $title = str_replace(' ', '_', $title); $title = preg_replace('/[^%a-z0-9_-]/', '', $title); return $title; } add_filter('sanitize_title', 'slug_translate_j_to_e', 9); ?>
上のコードを適当なファイルに保存( slug-translate-j-to-e.php とか適当な名前つけてね)して、Wordpressのプラグインフォルダ( /wp-content/plugins/ 以下)にアップロードすれば、プラグイン管理画面から「使用する」が選べるようになります。
後は、普通に投稿すれば自動的に投稿タイトルを翻訳したものが投稿スラッグとして使われてると思います。
翻訳を確認したいという場合は、「下書きとして保存」とし、その後に投稿スラッグを編集すれば、半手動で利用できるかと。
やっていること
Translation API のクラス リファレンス – Google AJAX Language API – Google Code をRESTで使用しています。
タイトルをAPIに投げて、JSONで帰ってきたものを処理。
処理は、上から順番に、大文字を小文字にする → スペースをアンダースコアに変換する → 小文字英数字とハイフン、アンダースコア以外の文字を削除する といった内容。
注意点
Google の翻訳は期待しないほうがいい。