Custom Field GUI Utility SLUG

カテゴリごとにカスタムフィールドを個別の設定ファイルで切り替えられる
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」という名前を付けると
自動的にそのテンプレートを読み込むようになったので、
このプラグインの設定ファイルもそれに合わせてみました。

おかしな部分やコメントがありましたら、下記のフォームからお願いいたします。

28 Responses to “Custom Field GUI Utility SLUG”

  1. [...] これをさらに便利にするために、 カテゴリごとに設定ファイルを分けられるようにしてみました。 このページから ダウンロード できます。 [...]

  2. plannet より:

    素晴らしいプラグインをありがとうございます。

    「conf-AAA.ini」を設置するカテゴリの投稿画面には
    標準の投稿フィールドを表示させないようにしたいと考えて
    下記の一行をcfg-utility-slug.class.phpの247行目に書き加えました。

    echo “#poststuff .postarea {display: none;}”;

    このような改造で問題はないでしょうか。
    他に良い方法をご存じでしたらご教示いただけるとありがたいです。

  3. okano より:

    こんにちは。コメントありがとうございます。

    私は「WPlite」というプラグインを併用しています。
    「Disable Page/Post Meta」欄の「Custom Fields」にチェックを入れると、お望みの効果が得られると思います。
    他の不要な欄も隠せて便利ですよ。

  4. plannet より:

    okanoさん、プラグインのご紹介ありがとうございます。
    さっそく試してみたのですが、
    標準の投稿フィールド(タイトルフィールド下のtextarea)を消すやり方が
    どうも分からずに苦労しております。

  5. okano より:

    失礼しました。記事の本文も不要という事ですね。
    私は消すというよりも、こんな感じでjavascriptで非表示にしてしまいました。
    < script type="text/javascript">document.getElementById('postdivrich').style.display = "none";< / script>

  6. billy より:

    素晴らしいプラグインをありがとうございます。
    このプラグインのおかげでWPの活用の幅が広がりました。

    ひとつ?な動作を確認しましたのでご報告します。

    投稿が「未分類」以外のカテゴリに属していてmulti_checkbox を利用する際、チェックボックスにチェックをつけるとカテゴリ選択の「未分類」にも同時にチェックがついてしまいます。
    現在、更新をかける前に手動で「未分類」のチェックを消して対応しています。
    運用で回避できるので重大な問題ではないのですが、ご連絡させていただきました。

  7. okano より:

    こんにちは。コメントありがとうございます。
    いくつかの環境で試してみましたが、残念ながら再現できませんでした。
    どこかで原因につながる情報が見つかったら修正してみますね。

    このプラグインの元になっている「Custom Field GUI Utility」
    http://www.tinybeans.net/blog/2010/02/10-122218.html
    等も試してみる事をオススメします(^_^);
    毎回手動で対処する手間が減るかもしれません。

  8. hiroaki_pan より:

    カスタムフィールドで悩んでいるところに
    このプラグインと出会うことができました。
    ほんとうにすばらしいプラグインをありがとうございます。

    一つお伺いしたいのですが、
    投稿のカテゴリーごとに表示はできたのですが、
    投稿ではなく、
    それぞれ固定ページごとにも違うカスタムフィールドを
    表示させることは可能なんでしょうか?

    初心者ながらにソースを見て、
    試行錯誤したのですがどうしてもわからず、
    ご迷惑かとも思ったのですが、
    質問させていただきました。

  9. okano より:

    こんにちは。気に入ってもらえたようで嬉しいです。

    このプラグインでは、記事を編集する際に、その記事のカテゴリを
    get_the_category関数で取得して、そのカテゴリにあった設定ファイルを読み込み、
    カスタムフィールドとして表示するようになっています

    ページにはカテゴリが付けられないので、タイトルで分ける等の
    工夫をすれば可能な気がします。が、やってみないと分かりません(^^);;;

  10. hiroaki_pan より:

    ご返答ありがとうございます!!

    そうなんですね!

    たしかに、
    固定ページにはカテゴリーが無いですよね。。

    ちなみに
    素人ながらの質問ですが、
    どこの部分を書き換えればよいのでようか?

    どうしてもそういった動作がしたいのですが・・・

  11. okano より:

    お返事遅くなりました。
    実際に試していないのでアイデアレベルですが、
    cfg-utility-slug.class.php をご覧ください。大事なのは以下の3関数です。

    function get_custom_fields($slug = “”)
    ・・・カテゴリスラッグに対応したカスタムフィールドを、ファイルから取り出して返す関数

    function insert_gui()
    ・・・編集画面を出す際に、記事を元にカスタムフィールドのキーや形式をget_custom_fields関数を使って取り出し、それぞれの形式でHTMLに出力する関数

    function edit_meta_value($id )
    ・・・編集後に「公開」や「保存」をクリックした際に、記事IDを元にカスタムフィールドのキーをget_custom_fields関数を使って取り出し、入力された値と組み合わせて保存する関数

    これらの関数を使って、カスタムフィールドを編集画面に表示したり、編集画面で入力された値を保存したりしています。
    get_custom_fields関数にカテゴリスラッグを渡して、カスタムフィールドのキーを得る。
    という形式になっているので、get_custom_fields関数まわりを書き換えて、
    記事とページとで動作を分ける。という流れが良いと思っています。

  12. hiroaki_pan より:

    詳しいご説明ありがとうございました!!

    その後も色々試したのですが、

    いったんあきらめて違う方法を考えていたのですがみつからず・・・

    phpの理解力がかなり乏しくて書き換えられるか不安ですが、
    早速試してみたいと思います!!

  13. thebeach より:

    >重大なエラーを引き起こしたのでプラグインの有効化はできませんでした。

    となり、WPのプラグインに入れることができません。

    他の方は、問題なく使用されていらっしゃるので、
    私のほうでなんらかの問題があるのかもしれませんが、念のためご報告まででした。

  14. okano より:

    thebeach 様、ご報告に感謝いたします。
    こちらでは特に問題なかったのですが、もしApacheやphpのログに
    何か出ているようでしたら、教えていただけますと幸いです。

  15. shin より:

    はじめまして。
    1つカスタムフィールドので悩んでいる事があり、
    是非ご教示頂きたいのですが、
    WordPress3.0から複数のブログを設定できるようになりましたが、
    ブログごとにカスタムフィールドの項目の表示を切り替えたいと考えています。

    カテゴリごとに切り替える事が出来るなら、
    ブログごともできると思うのですが、
    お力を貸して頂けないでしょうか。
    何卒よろしくお願いいたします。

  16. okano より:

    こんにちは。
    まだ試していないのですが、get_bloginfo() 関数を使うとBLOG名やURLが取得できるので、
    それを使って振り分けるのはどうでしょう。

    http://codex.wordpress.org/Function_Reference/get_bloginfo

  17. chocochip より:

    はじめまして、Custom Field Gui Utility with SLUGは
    とても素晴らしいプラグインだと思い、使用させて
    いただきたかったのですが、以下の環境で使用しましたが
    【重大なエラーを引き起こしたのでプラグインの有効化はできませんでした。】と
    表示され、使用することができませんでした。
    何か対応策がございましたら教えていただきたいと思います。

    Custom Field GUI Utility 3 バージョン 3.0.4
    Custom Field Gui Utility with SLUG バージョン 3.0.3

    その他のプラグインを停止してもエラーになってしまいました。
    よろしくお願い致します。

  18. okano より:

    こんにちは。コメントありがとうございます。

    Custom Field GUI Utility 3 を入れなくても、
    Custom Field Gui Utility with SLUG を使う事ができます。
    中身はほとんど同じなので、両方同時に有効にしようとするとバッティングしてしまいます。

    > 重大なエラーを引き起こしたため、プラグインを有効化できませんでした。
    > Fatal error: Cannot redeclare insert_head() (previously declared in
    というエラーの場合は、どちらか片方だけ有効にして下さい。

  19. Crysta より:

    はじめまして、とても素晴らしいプラグインをありがとうございます。
    投稿画面に設定したカスタムフィールドは出てきたのですが、
    削除・更新ボタンが表示されず、入力内容をテンプレートに
    反映できないのです…
    他のプラグインが干渉しているかも…と、1つずつ停止して
    動作を確認したのですが、現象は変わらず…
    原因として何が考えられるでしょうか?

    WPのバージョンは2.9.2
    の前にはを記述しています。

    よろしくお願いいたします。

  20. okano より:

    こんにちは。コメントありがとうございます。

    Custom Field Gui Utility with SLUG を入れて、設定ファイルを修正したら
    記事の編集画面で「公開」や「更新」のボタンが表示されなくなった。
    という事ですよね。

    設定ファイルで、入力欄の横幅を大きすぎる値にしていませんか?
    記事投稿画面の公開欄ウイジェット(?)の位置によっては、
    長すぎる入力欄によって公開ボタンが画面の右に追い出されてしまっているかもしれません。

    差し支えないなら、画面を見せてもらえるともっとベターなアドバイスが出来るかと思います。

  21. Crysta より:

    こんにちは。ご回答をありがとうございます。

    > 記事の編集画面で「公開」や「更新」のボタンが表示されなくなった。
    という事ですよね。

    ご説明が足りずに申し訳ありません。
    表示されないのは、「conf-カテゴリスラッグ.ini」で設定したカスタムフィールドのボタン部分です。
    例えば、「type = textfield」でテキスト入力欄を設定すると、入力欄は表示されるのですが、入力した値を確定または削除するためのボタンが表示されないのです。
    画像設定用の設定「type = imagefield」でも同様です。

    よろしくお願いいたします。

  22. okano より:

    このプラグインで生成する入力欄には、
    カスタムフィールド毎の確定や削除のボタンはありません。
    (名前欄を変更する場合には、設定用の.iniファイルを書き換えてください)
    値を入力して記事を保存すると、get_post_meta関数やget_post_custom関数などで
    テーマファイルから取り出せるようになります。

    参考URL:カスタムフィールドの使い方
    http://wpdocs.sourceforge.jp/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9

  23. Crysta より:

    okano様

    もともとボタンは表示されないのですね!
    デフォルトのカスタムフィールドには「更新・削除」ボタンがあるので
    表示されないのは、他のプラグインの干渉か私の設定ミスだと思っていました。

    結果として問題解決しました。
    初歩的なミスで本当にお恥ずかしいのですが、メタデータを取得する関数は
    ループ内で動かすべきところ、その記述が欠落していました!
    投稿の「更新ボタン」をクリックし、正常に値が取り出せたのを確認しました。

    お手数をおかけして申し訳ありません。
    ありがとうござました。

  24. okano より:

    解決したようでよかったです。
    また何かありましたらコメント下さいね(^^)

  25. livethere より:

    カスタム投稿タイプでは利用できないのですか?
    カスタム投稿タイプごとに表示を切り替えてつかるようにはなりますか?

  26. livethere より:

    すいません、解決いたしました。

    私はカテゴリ毎に切り替える必要がなく、カスタム投稿タイプ毎に切り替えをしたかったので
    function insert_gui() とfunction edit_meta_value() のカテゴリを取得しているところを
    get_the_categoryではなくget_post_typeで投稿タイプを取得することで解決できました。

    ありがとうございました。

  27. [...] WordPressの投稿画面にカスタムフィールドの入力欄を作る「Custom Field GUI」ってプラグインをより使いやすくカスタマイズした「Custom Field GUI Utility」ってプラグインをカテゴリごとに表示するカスタムフィールドを切り替えやすいようにカスタマイズした「Custom Field GUI Utility SLUG」ってプラグインをカスタム投稿タイプごとに表示するカスタムフィールドを切り替えられるようにカスタマイズしてみました。 [...]

Leave a Reply