WordPressのテーマで、jQueryを利用したプラグインを組み込んでいるのにもかかわらず、エラーが発生して利用出来ないことがあります。

原因

これはテーマ側で wp_enquere_script() 関数を用いて、WordPress本体に附属するjQueryを利用している場合によく発生する問題です。

/* WordPress附属のjQueryを、wp_head() 内で読み込む */
wp_enqueue_script('jquery');

WordPressの wp_enqueue_script() 関数を用いてjQueryを読み込んだ場合、通常利用できるはずのjQueryのインスタンスである$変数が利用できません。

これは、WordPress附属のjQueryでは他のライブラリとの競合を防ぐために jQuery.noConflict() を自動的に実行させているため、$変数が設定されないのが原因です。

対処

テーマ側で独自にjQueryを用意して読み込んだり設置してもかまわないのですが、プラグインなどで wp_enqueue_script('jquery') でjQueryを呼び出されてしまうと、既にテーマ附属のjQueryが読み込まれているのにもかかわらず、WordPressに附属しているjQueryも読み込まれてしまいます。

そのため、scriptタグの記述される順番によっては、WordPress附属のjQueryが優先され、jQuery.noConflict() 関数が実行されてしまうために$変数が使えなくなる事もあります

そのため、いかなる場合にも正常に動作させられるようにするには、jQueryを利用するコードを工夫する必要があります。

問題の起きないコード

下記のように、jQueryのインスタンスを$変数として利用できるスコープを作り、その内部にjQueryを利用したコードを書きましょう。

(function($) {
    /* いつも通りのjQueryを利用したコードを書く */
    $(function() {
        /* 初期化コードなど */
    });
})(jQuery);

こうすることで、WordPressに附属するjQueryが利用された場合でも問題無く$変数を使ったコードを実行することができますし、他のフレームワークとのバッティングも起きません。

九星気学という有名な占術があります。

身近では厄払いの方位除けなどに使われ、方位の吉凶を占う際によく利用されるようです。
方位除けに行った際「五黄殺」や「暗剣殺」なんていう単語を見た・聞いたことがある方が多いかと思いますが、まさにそういった方位と関係があり、自分の生年月日から算出する「本命星」と「月命星」から、方位の吉凶を占います。(間違えていたらごめんなさい!)

九星気学の詳しい説明はWikipediaに任せるとして、仕事で生年月日から「本命星」と「月命星」を算出できるPHPのコードを書きましたので、何かに使えるかと思い、公開します。
CONTINUE READING

WordPress上にてGoogleMapsAPIを利用する必要があったので、比較的使いやすそうなWP-GoogleMapsというプラグインを利用してみたところ、日本語が文字化けしてしまって使い物にならないというバグに遭遇して解決したので、プラグインの紹介とその解決方法を掲載します。

CONTINUE READING

WordPress3.0から搭載されたカスタムメニュー(nav menu)は、サイト内コンテンツをドラッグアンドドロップで自由にカテゴライズする事が可能となり、グローバルメニューやサイトマップなどを管理する場合にとても便利な機能です。

ただ、このカスタムメニュー、cssのクラス名などを指定する事は可能ですが、リンクボタンに画像を直接利用しようとなると、いろいろな工夫が必要になります。

単純に画像のURLを、メニューのに登録したエントリのタイトルに指定することもできますが、WordPressに多少詳しくないと、アップロードした画像のURLなどを指定するのは敷居が高いですし、メニューの管理上も画像のURLがエントリ名となってしまうため、管理がし辛くなってしまいます。

CONTINUE READING

CakePHPでフォームのバリデーションを行う場合、例えばチェックボックスで「選択肢A」が選択されている場合のみ、「アンケート」のテキストエリアを必須入力にしたい!といった事があるかと思います。

バリデーションルールを切り替えるというのも1つの手段かと思いますが、もっと簡単に、バリデーションの定義だけでそれを実現できる関数を、ビヘイビアとして書いてみたので公開します。
CONTINUE READING