カテゴリー: WORDPRESS

スクラッチで、wordpressのプラグインを開発するチュートリアル

http://net.tutsplus.com/tutorials/wordpress/creating-a-custom-wordpress-plugin-from-scratch/

Create a Custom WordPress Plugin From Scratch - Nettuts+

wordpressは今年に入って、国内でもかなり注目度が高い。

テーマやプラグインを色々探すことも多くなってきているが、自分でプラグインを開発するようなこともあるかもしれない。

そこで、スクラッチでWPプラグインを開発するチュートリアルの登場。

問題は、、、英語なんだよね;

でも、わかりやすく書かれているので、がんばって挑戦してみるのもアリ。

WORDPRESSで制作したサイトを多言語対応にする-その1-

マルチリンガルのやり方は、大きく分けて2通り。

日本語で書いたエントリーを自動翻訳させるパターンが、その1つ。

でも、これだと、変な翻訳になってもノーサポート。なので、コーポレートサイトなどには適さない。

もうひとつが、エントリー、それぞれが、多言語で記述できるというもの。

この場合は、翻訳自体は、自分でやらないといけないけど、エントリーごとに、対応言語の有無を選べたり、まとめられる。こっちのほうが、使い勝手があるかな?

とりあえず、実験。

今回は、「qTranslate」というプラグインを使用して、管理画面のエントリーフォームをタブで切り替えて、それぞれの言語のエントリーを記述し、フロントページからは、言語切り替えリンクボタンで、表示を切り替えられるようにしようと思う。

まずは、WORDPRESSのプラグインディレクトリから、qTranslateをダウンロードして(http://wordpress.org/extend/plugins/qtranslate/)FTPでアップロードするか、WPの管理画面のプラグインメニューから検索して、ブログに取り入れる。

qTranslateプラグインを有効にしたら、プラグインの管理メニューから設定を行う。
設定→言語設定が、qTranslateの設定項目になる。先にプラグインを有効化した時点で、WPの管理画面は、一旦英語表記になると思うので、Setting→Language、ですね。

Language Code: ja
Flag: jp.png
Name: Japanese
Locale: ja_JP
Date Format: ※特にフォーマットを指定する場合はここも入力
Time Format:※特にフォーマットを指定する場合はここも入力
Not Available Message: Sorry, this entry is only available in %LANG:, : and %.

Default LanguageをJapaneseにする。
その他利用する言語を「enable」、使用しない言語は、「disable」に。

qTranslateは、そのままだと、日本語のエンコードをeuc-jpに解釈してしまい、設定によっては文字化けなどが起こる可能性があるため、言語ファイルを用意する。

/wp-content/languagesの中の、「ja.mo」ファイルをコピーして、「ja_JP.mo」という名称で保存。(「ja.mo」は、そのまま残す。)

これで、だいたいOK。

今度は、フロントページで、ユーザーが閲覧する表示言語を選択できるようにする。

ヘッダーやindex.phpテンプレートの、言語選択リンクボタンを表示させる適当な場所に下記のコードを埋め込む。ヘッダーのglobal_navi取得コードの前に入れるとよい。

<?php echo qtrans_generateLanguageSelectCode(‘both’); ?>

国旗のマークアイコンを表示させる場合は(‘image’)、テキストで「日本語」「ENGLISH」などと表示させる場合は(‘text’)、両方表示は(‘both’)を使用する。

以上。

もし、文字化けなどのエラーが出たり、詳しい設定で躓いた場合は、下記サイトが参考になりマスヨ。

http://formula1.gimlet301515.com/WordPress/?p=407

http://saqoosha.net/2009/01/06/1672/

そのほか、自動翻訳などを使いたい場合は、こういうプラグインもあり。

http://wordpress.org/extend/plugins/wp-multilingual/

WORDPRESSへフォームをつけた。そして携帯対応にした。

WORDPRESSには、色んなプラグインがある。

その中に、お問い合わせフォームを簡単に作ろう♪というプラグインがあるのであるが、

この2つで迷い、悩みぬいた挙句(というか、やりたいことを実現するために朝方までソースをいじいじテストした挙句)今回は、contact form 7を利用することにした。

というのも、問題は、KTAI STYLEとの相性というか、、、携帯での文字化け?

フォームのメール入力欄に携帯電話のメールアドレスを使用すると、送られてくる内容確認メールが文字化けするのだ。色んなハックを調べてやってみたんだけど、PCサイトでは、文字化けなく携帯にメールが送られるようになったものの、どうしても、KTAI STYLEの携帯サイトからは、文字化けが直らない・・・

エンコードの問題があるので対応を迫られるのはしょうがない;
とはいえ、これはキビシイ。

cformでは、全体の文字化けは、回避できたけど、formの値の部分のみ文字化けする。(後ちょっとな気がするんだけど;)

てことで、なんとかうまくいったcontact form 7のハック。

wp-contact-form-7.phpのL991あたり。function validateにktai style用のコードを追加。

function validate($contact_form) {
$fes = $this->form_elements($contact_form[‘form’], false);
$valid = true;
$reason = array();

foreach ($fes as $fe) {
$type = $fe[‘type’];
$name = $fe[‘name’];
$values = $fe[‘values’];
$raw_values = $fe[‘raw_values’];

// Ktai ONLY
if (preg_match(‘/^(?:text|textarea)[*]?$/’, $type) && function_exists(‘is_ktai’) && is_ktai())
$_POST[$name] = mb_convert_encoding($_POST[$name], get_bloginfo(‘charset’) ,”SJIS”);

// Before validation corrections
if (preg_match(‘/^(?:text|email|captchar|textarea)[*]?$/’, $type))
$_POST[$name] = (string) $_POST[$name];

よし!

これで、簡単にフォームが追加できる!試しに、確認メールをお問い合わせユーザーに返信する設定で、メアドをdocomoにしてみたけど、OKだった。

は~。理屈は分かってんだけど、情報少ないし、大変だった。

参考サイト:http://d.hatena.ne.jp/v-m-s_memo/20081101/1225548282

この中で、ktai styleの作者のゆりこさんのコメントがあって、

「で、修正コードですが、SJIS 決め打ちはいろいろ問題が出そうです。現在は SJIS ないし SJIS-win しかないですが、将来的には is_ktai() が true でも UTF-8 になる可能性があるため、global $Ktai_Style; してから、$Ktai_Style->get(‘charset’) した値を使ってください。これならば、互換性が保てます。」

ということなので、

// Ktai ONLY
global $Ktai_Style;
$ktai_char = $Ktai_Style->get(‘charset’);
if (preg_match(‘/^(?:text|textarea)[*]?$/’, $type) && function_exists(‘is_ktai’) && is_ktai())
$_POST[$name] = mb_convert_encoding($_POST[$name], get_bloginfo(‘charset’) ,$ktai_char);

とかしたら、いいってことなのかな???

また、明日にでもテストしてみよう。。。 →これで、いけましたね。

追記:(09/08/17)

contact form 7のバージョンが新しくなったので、こちらに記載していたコードとコードの位置がどちらも変更になってしまった。(ketai styleもバージョンアップされている)

いい感じになったけど、ハックには不都合;

てことで、検索していたら、こちらで、モジュールを公開されているのを発見!
http://www.icoro.com/200908093906.html