カテゴリごとにカスタムフィールドを個別の設定ファイルで切り替えられる
Custom Field GUI Utility SLUGは、
ここからダウンロードできます。
WordPressのカスタムフィールドを使う時に便利なプラグインに
「Custom Field GUI Utility」があります。
公式ページには、jQuery を使ってカテゴリごとに表示するフィールドを
切り替えるカスタマイズが掲載されています。
この方法はconf.ini にclass を指定するだけという分かりやすい物ですが、
カテゴリ数が増えると設定ファイルが大きくなり扱いづらいです。
そこで、カテゴリ別に設定ファイルを分けるようにしてみました。
例えば、以下のカテゴリがあった場合、
・名前:ミュージシャン
スラッグ:musician
・名前:アルバム
スラッグ:album
設定ファイルとして、
・conf-musician.ini
・conf-album.ini
を作成すると、該当するカテゴリを編集する際に、それぞれの設定ファイルを自動的に読み込みます。
(カテゴリの名前ではなく、スラッグを使う点にご注意ください)
WordPress2.9では、カテゴリーページのテンプレートに
「category-スラッグ名.php」という名前を付けると
自動的にそのテンプレートを読み込むようになったので、
このプラグインの設定ファイルもそれに合わせてみました。
おかしな部分やコメントがありましたら、下記のフォームからお願いいたします。


はじめまして。
wakakufuさんと同様に子カテゴリを親カテゴリのスラッグで設定したいと思っているのですが、cfg-utility-slug.class.phpへの変更内容をもう少し詳しくお教え頂けないでしょう。
宜しくお願い致します。
> berghilo さん
画像を貼っていただいたのでしょうか。
このコメント欄には反映されていないので状況がよく分かりませんが、
画像サイズの取得はカスタムフィールドの値として持つよりは、
別な方法で取得する方がよいと考えています。
> tecs さん
例えば、
設定ファイルが無い場合は、親のカテゴリスラッグを使う
ために、カテゴリ階層をカンマ区切りで取り出して配列に直し、
配列の最後(カテゴリ階層の深い側)から順に、
設定ファイルが有るか無いかを調べ、
一番上の階層まで探しても無ければ、デフォルトの設定ファイルを読み込みます。
以下のような感じでどうでしょう。
(行頭の空白が消えたらすみません)
function get_custom_fields($slug = “”) {
if ($slug) {
$file = dirname( __FILE__ ) . ’/conf-’ . $slug . ’.ini’;
if ( !file_exists($file ) ) {
//設定ファイルが無い場合は、親のカテゴリスラッグを使う
$idObj = get_category_by_slug($slug);
$category_hierarchy_csv = get_category_parents($idObj->term_id, FALSE, ’,’ , TRUE);
$category_hierarchy = explode(’,’, $category_hierarchy_csv);
$len = count($category_hierarchy);
for($i = $len – 1; $i >= 0; $i = $i – 1) {
$slug = $category_hierarchy[$i];
$file = dirname( __FILE__ ) . ’/conf-’ . $slug . ’.ini’;
if ( file_exists($file ) ) {
break; //exit for.
}
}
if ( ! file_exists($file ) ) {
$file = dirname( __FILE__ ) . ’/conf.ini’;
}
}
} else {
$file = dirname( __FILE__ ) . ’/conf.ini’;
}
if ( !file_exists($file ) )
return null;
$custom_fields = parse_ini_file($file, true );
return $custom_fields;
}
ご回答ありがとうございました。
見事実現出来ました!
これからもCustom Field GUI Utility SLUGにどっぷりと浸からせて頂きますm(_ _)m
はじめまして、素晴らしいプラグインをありがとうございます。
カテゴリーの選択で管理でき、大変重宝しているのですが、複数のカテゴリーを選択するとカスタムフィールドが消えてしまいます。
カテゴリーは下記のような状態です。
———————————————————
□業種(スラッグ:type ID:01)
ー飲食店(スラッグ:eating ID:02)※conf-eating.ini を適用
ー雑貨屋(スラッグ:shoping ID:03)※conf-shoping.ini を適用
□地域(スラッグ:area ID:04)
ー東京都(スラッグ:tpkyo ID:05)
ー神奈川県(スラッグ:kanagawa ID:06)
□特徴(スラッグ:point ID:07)
ー男性向け(スラッグ:mens ID:08)
ー女性向け(スラッグ:ladys ID:09)
———————————————————
「業種」の子カテゴリーをカスタムフィールド用として1つ選択しています。
この状態だと、もちろん問題ないのですが、他カテゴリーを選択すると消えてします状態です。
何か解決策がございましたら、よろしくお願いします。
こんにちは。コメントありがとうございます。
お返事遅くなりました。
現在は記事のカテゴリのうち、最後にみつかったカテゴリ・スラッグのみを使用するようになっています。
edit_meta_value関数や、insert_gui関数でカテゴリ・スラッグを1つ抽出し、
get_custom_fields関数で、設定ファイルを開いています。
1つしか受け取れないのが問題だと思うので、
記事のカテゴリ・スラッグを全部get_custom_fields関数に渡し、
get_custom_fields関数で何らかの優先順位に従って、
設定ファイルをさがせば良いと思います。
お返事ありがとうございます。
お答え頂いた内容を参考に設定ファイルを触ってみます。
[...] http://www.synergysoftware.jp/%E4%BA%8B%E6%A5%AD%E6%A1%88%E5%86%85/wordpress%E3%81%AA%E3%81%A9cms%E3... [...]