home > WordPress > プラグイン > WordPressのカスタムフィールドを...
- 【2009-02-05 追記】
Custom Field GUI Utility 1.1.0 - WordPress 2.7 でカスタムフィールドを便利に使うプラグインを公開しました。WordPress 2.7 をお使いの方はこちらをお勧めします。
- 【2008-10-18 追記】
このブログ記事のプラグインのカスタマイズ版の『 Custom Field GUI Utility 』をバージョン 1.0.0 にバージョンアップしました。
WordPress 2.6.x をお使いの方はこちらをお勧めします。インターフェースが他のフィールドと同じになったり、画像のアップロード、サムネイル表示がスムーズにできます。
- 【2008-06-13 追記】
管理画面に反映されたフィールドの下にサンプルが表示できるようにしたり、「投稿の編集画面だけに表示」「ページの編集画面だけに表示」「両方の編集画面に共通して表示」という3パターンを使い分けられるようにした Custom Field GUI Utility というプラグインを公開しました。
- 【2008-06-05 追記】
Custom Field GUI をカスタマイズしてカスタムフィールドをもっと便利に使う方法という記事をアップしたので、あとでそちらもご覧ください。
- 【2008-04-10 追記】
試してみましたが、WordPress 2.5 でも問題なく動くみたいです。
WordPressのカスタムフィールド機能をグッと便利にするプラグインを紹介します。
柔軟なサイト運営を可能にするカスタムフィールド機能。Movable Typeでは4.1から追加されましたが、この機能はWordPressにもあります。
しかし、WordPressのカスタムフィールドの入力の仕方は、毎回「キー」をプルダウンメニューから選択するか入力して、それに対する「値」を入力後、「カスタムフィールドを追加」、それを繰り返して最後に記事を「公開」するという、ちょっと面倒な作業でした。
それをグッと楽にしてくれるプラグインが「Custom Field GUI」です。
このプラグインを利用すると、エントリー投稿画面に次のようなカスタムフィールドを入力するためのエリアが表示されます。なお、これはデフォルトの設定のままの画像です。
エントリー投稿画面のデフォルトのカスタムフィールド欄を使わずに、この欄にまとめて入力して「公開」すれば完了してしまいます。変更する場合も、ここを変更して「保存」するだけになります。
では、使い方を紹介します。
まず、Rhymed Code » Custom Field GUIへアクセスし、「Download Custom Field GUI 1.5」というところから「rc-custom-field-gui-1.5.zip」をダウウンロードして、解凍します。
解凍したフォルダ内には次の4つのファイルが入っています。
- conf-sample.ini
- rc-custom-field-gui.class.php
- rc-custom-field-gui.php
- readmie.txt
次に、「conf-sample.ini」というファイル名を「conf.ini」に変更してからテキストエディタで開きましょう。ブログの文字コードがUTF-8であれば、このファイルもUTF-8で保存する必要があるので、UTF-8で保存できるエディタを使いましょう。僕は「秀丸」を使用しました。
このプラグインには管理画面などはありませんので、このconf.iniを書き換えることによって設定を変更することになります。
さて、conf.iniを開くとデフォルトでは以下のような内容になっています。
[Plan]
type = textfield
size = 35
[Favorite Post]
type = checkbox
default = checked
[Miles Walked]
type = radio
value = 0-9 # 10-19 # 20+
default = 10-19
[Temper Level]
type = select
value = High # Medium # Low
default = Low
[Hidden Thought]
type = textarea
rows = 4
cols = 40
[半角大かっこ]で囲まれた部分がカスタムフィールドの「キー」に該当し、その下のtypeで「値」の入力方法を指定して、value(値)、default(初期値)、rows(行数)、cols(幅)などを適宜指定します。このプラグインでは「値」の入力方法が、次の5種類に対応しています。
- textfield(1行のテキスト入力フィールド)
- 入力されたテキストが値になります。
- checkbox(チェックボックス)
- ちょっと自信ないけどチェックが入っていると「TRUE」を入っていないと「FALSE」を返します。条件分岐に便利です。
- radio(ラジオボタン、一つのみ選択可)
- 選択されたものが値になります。
- select(プルダウンメニューから選択)
- 選択されたものが値になります。
- textarea(複数行のテキスト入力フィールド)
- 入力されたテキストが値になります。
さて、実際に設定をカスタマイズしてみましょう。
例えば、本やセミナーなどの内容を紹介するページを作るとします。
「タイトル」を入力、「種類」「カテゴリ」「お勧め度」を選択して、「コメント」を入力します。アフィリエイトがてら、アマゾンのインスタントストアにリンクする場合は「インスタントストア」にチェックを入れて、「ISBN-10」を入力します。他のサイトにリンクしたいときは「リンク」をチェックして「参考サイト」にサイト名を入力し、「URL」にアドレスを入力する、というフィールドにしてみます。
[タイトル]
type = textfield
size = 35
[種類]
type = radio
value = 本 # 雑誌 # セミナー
default = 本
[カテゴリ]
type = select
value = XHTML # CSS # PHP # Web標準
default = XHTML
[お勧め度]
type = select
value = ★ # ★★ # ★★★ # ★★★★ # ★★★★★
default = ★★★
[コメント]
type = textarea
rows = 4
cols = 40
[インスタントストア]
type = checkbox
[ISBN-10]
type = textfield
size = 35
[リンク]
type = checkbox
[参考サイト]
type = textfield
size = 35
[URL]
type = textfield
size = 35
設定を変更したconf.iniをUTF-8で保存し、rc-custom-field-guiフォルダを「wp-content/plugins」ディレクトリにアップロード(readme.txtは削除してOK)して、Wordpressの管理画面の「プラグイン」で「rc:custom_field_gui」を「有効化」すれば準備完了です。
エントリー投稿画面を見ると次のようになります。セレクトボックスもちゃんとなっていますね。
これを実際に記事に反映させるには、テンプレートをちょっとカスタマイズ必要があります。ここでは単純に、定義リストの形式でカスタムフィールドの内容を反映させてみます。
今回は、以下のようなソースをテンプレートに挿入してみます。
<dl>
<dt>タイトル</dt>
<dd><?php echo get_post_meta($post->ID,'タイトル',TRUE); ?></dd>
<dt>種類</dt>
<dd><?php echo get_post_meta($post->ID,'種類',TRUE); ?></dd>
<dt>カテゴリ</dt>
<dd><?php echo get_post_meta($post->ID,'カテゴリ',TRUE); ?></dd>
<dt>お勧め度</dt>
<dd><?php echo get_post_meta($post->ID,'お勧め度',TRUE); ?></dd>
<dt>コメント</dt>
<dd><?php echo get_post_meta($post->ID,'コメント',TRUE); ?></dd>
<?php if ( get_post_meta($post->ID,'インスタントストア',TRUE) ): ?>
<dt>インスタントストア</dt>
<dd><a href="http://astore.amazon.co.jp/sufingbeginne-22/detail/<?php echo get_post_meta($post->ID,'ISBN-10',TRUE); ?>/249-6464091-7456369"><?php echo get_post_meta($post->ID,'タイトル',TRUE); ?></a></dd>
<?php endif; ?>
<?php if ( get_post_meta($post->ID,'リンク',TRUE) ): ?>
<dt>参考サイト</dt>
<dd><a href="<?php echo get_post_meta($post->ID,'URL',TRUE); ?>"><?php echo get_post_meta($post->ID,'参考サイト',TRUE); ?></a></dd>
<?php endif; ?>
</dl>
テンプレートタグの部分を少し解説しておきます。
<?php echo get_post_meta($post->ID,'タイトル',TRUE); ?>
$post->IDでエントリーのIDを取得し、「タイトル」というキーに対する値をシングルの文字列(「TRUE」)で取得する、というものです。
<?php if ( get_post_meta($post->ID,'インスタントストア',TRUE) ): ?>~<?php endif; ?>
インスタントストアにチェックが入っている場合のみこの間を表示する、というものです。
あとはこれらを応用しただけですね。
さてさて、これを実際に表示してみると次のようになります。
以上です。
TrackBack [0]
- TrackBack URL
- Link to this Entry



初歩的すぎる質問で大変もうしわけないですが、テンプレートの挿入というのはどのファイルにすればいいのでしょうか?
テーマスキンのindex.phpとかでしょうか・・・?
まおさん、はじめまして。コメントありがとうございます。
挿入するテンプレートというのは、カスタムフィールドに入力した内容をどのページに表示させたいかによってことなります。
いずれにしても。wp-content/themes の中の使用中のテーマディレクトリ内のファイルになります。
トップページに表示させたいのであれば index.php(のループの中)、投稿記事の個別ページに表示させたいのであれば single.php、ページに表示させたいのであれば page.php といった感じになります。
答えになったでしょうか?
また、当ブログでは Custom Field GUI Utility という Custom Field GUI にちょこっとだけ手に入れたプラグインも置いてあります。こちらのプラグインだと、表示名とカスタムフィールド「キー」を別々にできるので、自分で言うのも何ですがお勧めです。
IE7で使用しているところ、一度投稿した記事を投稿の管理から再編集するときに、カスタムフィールドに追加してあるチェックボックスが最初の投稿時にチェックしていても、チェックが外れて表示されてしまいます。
Firefoxでは、チェックボックスのチェックが維持されてまま表示されます。
IE7でもチェックが維持できる方法があるでしょうか?
よろしくお願い致します。
まささん、コメントありがとうございます。
ご質問いただいた不具合については、どうやらプラグインが WordPress の管理画面に生成する (X)HTML の書式が原因のようです。
解消方法をエントリーしましたので、詳細は以下をご覧ください。
IE で Custom Field GUI Utility のチェックが外れてしまう件を修正
http://www.tinybeans.net/blog/2008/09/ie-custom-field-gui-utility.html
当サイトで公開しているカスタマイズ版についても修正版を公開しております。
ご指摘ありがとうございます。
こんにちは、プラグイン利用させていただきました。
とても使いやすいです。
ただバージョン2.7だと投稿画面の一番下に表示されてしまいます。
もっと上に表示したいのですが、無理でしょうか。
今後もご活躍を期待しております。
寒いのでお体にお気をつけてください。
caz さん、コメントありがとうございます。
WordPress 2.7 になって、管理画面が大きく変わりましたので、現在当サイトで配布している Custom Field GUI Utility では、モニターのサイズによって多少表示が乱れたり、ドラッグ・ドロップで移動できなかったりします。
近日中に 2.7 対応版を作りたいと思いますので、申し訳ございませんが、少々お待ちください。
よろしくお願いいたします。
管理人様
ご回答ありがとうございました。
別の質問なのですが、textareaではdefaultは設定できませんでしょうか。
こちらのブログのコメントフォームのように最初に文字を表示させておくことは可能でしょうか。
お忙しいところ教えて君で恐縮ですがよろしくお願いいたします。
caz さん、こんにちは。
textarea に default 値を入れることは可能ですが、僕のブログのようにフォーカスしたときにデフォルト値を消すには JavaScript をかませる必要があります。ひょっとしたら全部 jQuery でやってしまった方が楽かもしれません。
ちょっとお時間をくださいませ。お待たせしてすみません。
caz さん、こんにちは。
textarea に default 値を入れることは可能ですが、僕のブログのようにフォーカスしたときにデフォルト値を消すには JavaScript をかませる必要があります。ひょっとしたら全部 jQuery でやってしまった方が楽かもしれません。
ちょっとお時間をくださいませ。お待たせしてすみません。
いつも便利に使わせていただいています。
wp2.7で使用したところ、IE6の投稿画面でメディアアップロードのテキスト及びアイコンが表示されない不具合がありました。
jsファイルの書き換えなどで回避する方法はありますでしょうか?
sonar さん、コメントありがとうございます。返信が遅くなってすみませんでした。
僕の環境でテストしてみましたが、XP + IE6 でも正常に表示されています。投稿欄の上にあるオリジナルのアップローダーは正常に表示されていますでしょうか?表示されていなければ、Custom Field GUI Utility では、そのアップローダーをコピーして使っているだけなので、オリジナルのものに問題があります。
ちなみに使用されているのは「Custom Field GUI」ですか?「Custom Field GUI Utility」ですか?
ご回答ありがとうございます。
一緒に使用していた「Google Maps Anywhere」を外したところ表示されるようになりました。
よく確かめもせずコメントしてしまい申し訳ありませんでした。
使わせていただいているのも「Custom Field GUI Utility」で、これもまたポスト違いでした。本当に恐縮です。
すばらしいプラグインのおかげで私のような者にもサイト構築ができ、作者様には感謝の言葉もありません。益々のご活躍をお祈りします。
sonar さん、どうもありがとうございます。
表示されるようになって良かったですね。今後もできる限り「Custom Field GUI Utility」を発展させていきたいと思います。そのためにはもっと PHP を勉強しないといけないので頑張ります!
初めましてnabeといいます。
「Custom Field GUI Utility」で検索したら
こちらのサイトにたどり着きました。
早速オリジナルのプラグインも使用させて頂いてます。
本当にこのような便利なものを作ってもらって感謝感激です。
がしかーし,見様見真似でコードをsingle.phpに実装
したのですがどうやらうまく出力されません!!
なにがいけないのかアドバイス下さい。
宜しくお願いします。
それとconf.iniの書き換えで投稿画面の表示の順番がランダムに
なる?消えたりする?事があります。一体なにが原因なんでしょう
nabe さん、コメントありがとうございます。
>見様見真似でコードをsingle.phpに実装したのですがどうやらうまく出力されません!!なにがいけないのかアドバイス下さい。
>conf.iniの書き換えで投稿画面の表示の順番がランダムになる?消えたりする?
上記2点のご質問に関して、このコメントだけでは何が問題か特定できません。Contactフォームからで結構ですので、次の内容を教えていただけますか?www.tinybeans[アットマーク]gmail.com へメールいただいてもOKです。
1. conf.ini の種類(conf-common.ini か conf-post.ini か conf-page.ini か)
2. conf-xxx.ini の内容
3. single.php に書いたソース
4. WordPress のバージョン
よろしくお願いいたします。
なお、原因が特定できる保証はありませんのでご了承ください。
1. conf.ini の種類(conf-common.ini か conf-post.ini か conf-page.ini か)
conf-post.ini(conf-common.iniとconf-page.iniは削除)
2. conf-xxx.ini の内容
[textfield_page]
fieldname = ハンドルネーム
type = textfield
size = 35
sample = ハンドルネームを記入して下さい
[radio_post]
fieldname = 性別
type = radio
value = 男 # 女
default = 男
sample = あてはまるものにチェック
[imagefield_page]
fieldname = 画像
idname = imagefield_idname_page
type = imagefield
size = 35
sample = 画像・写真を挿入する
[textfield_post]
fieldname = 年齢
type = textfield
size = 5
sample = 年齢を記入して下さい
[radio_post]
fieldname = コンタクト申込者に伝える内容
type = radio
value = 電話番号 # メールアドレス # 両方(電話番号+メールアドレス)
default = 電話番号
sample = あてはまるものにチェック
[textarea_post]
fieldname = 最後に一言メッセージ
type = textarea
rows = 4
cols = 40
sample = input the example or the caption
3. single.php に書いたソース
<dl>
<dt>ハンドルネーム</dt>
<dd><?php echo get_post_meta($post->ID,'ハンドルネーム',TRUE); ?></dd>
<dt>年齢</dt>
<dd><?php echo get_post_meta($post->ID,'年齢',TRUE); ?></dd>
<dt>コンタクト申込者に伝える内容</dt>
<dd><?php echo get_post_meta($post->ID,'コンタクト申込者に伝える内容',TRUE); ?></dd>
<dt>最後に一言メッセージ</dt>
<dd><?php echo get_post_meta($post->ID,'最後に一言メッセージ',TRUE); ?></dd>
</dl>
4. WordPress のバージョン 2.6.1
以上です
3.のコンタクト申込者に伝える内容が表示されなかったので
そこにはコードをかいていません。
お手数かけますが, 宜しくお願いします
まず、コメントフォームにソースが反映されなくてすみませんでした。修正しておきます。
さて、ソースを拝見しました。
カスタムフィールドをテンプレートに反映させる PHP の部分が違っています。例えば、
<?php echo
get_post_meta($post->ID,'ハンドルネーム',TRUE); ?>
で言えば、「ハンドルネーム」ではなく「textfield_page」でなくてはなりません(ソースは1行で)。iniファイルのfieldnameは、あくまで管理画面上に表示させる名前であり、DBにはいっさい関係していないのです。したがって、カスタムフィールドの値を呼び出すには「キー」である[ ]内の文字で呼ばなくてはなりません。つまり、
<?php echo
get_post_meta($post->ID,'textfield_page',TRUE); ?>
となります。また、上記の書き方は古いものだと思うので、
<?php echo post_custom('textfield_page'); ?>
でも大丈夫だと思います。他の部分もそのように直してみてください。
なお、今コメントいただいているページは、あくまでオリジナルのプラグイン「Custom Field GUI」を紹介しているページなので、僕がカスタマイズした「Custom Field GUI Utility」とは異なります。名前も似ているので、説明を混同しやすいかもしれませんので、カスタマイズ版の方は「Custom Field GUI Utility(http://www.tinybeans.net/blog/download/wp-plugin/cfg-utility-100.html)」をご確認ください。
以上、訂正してお試しください。
なお、こちらのコメントフォームの不具合で、PHPのソースを何度かコメントさせてしまいすみませんでした。とりあえず同じ内容のコメントでしたので、非公開状態にさせていただきましたのでご了承ください。
<?php echo post_custom('textfield_page'); ?>
のソースで出力できました。
ありがとうございます。
しかし、2. conf-xxx.ini の内容で
管理画面には4つの項目しか表示されません。
どこかで数の制限がされているのでしょうか?
お手数かけますが宜しくお願いします
何度もすいません
解決できました!!
[textfield_page]の名前が同じになってました。
それぞれ好きな名前を設定すればOKなんですね。
ようやく理解出来ました。
有り難うございました!!
nabe さん、うまくいって良かったですね。
ついでに言えば、カスタムフィールドの「キー」にあたる [ ]内には意味を持たせた名前にした方が良いと思います。例えば、[textfield_page]ではなくて[handle_name]などです。
本格的に運用を始めてからでは変えづらいので、はじめによく検討しておくことをお勧めします。
了解しました。
ご丁寧にありがとうございます。
以前にも同じ質問があるようですが、「textfield」にdefaultを設定する方法は無いのでしょうか。
使いやすいとは思うのですが、「textfield」にdefaultを設定したいと思っている人は結構いるのではないかと思うので、方法があるようでしたら、教えて頂けると助かるのですが。
セレクトボックスの場合defaultで設定したものが初期値になっているのですがSelectという項目も選べてしまいます。
通常のフォームでいえば『未設定』や『選択してください』という項目にあたると思うのですがこれを消す方法と項目の名前を変更する方法ってありますか?
バージョンは2.8.4です。宜しくお願いします!
こうさん、コメントありがとうございます。
>Selectという項目も選べてしまいます。通常のフォームでいえば『未設定』や『選択してください』という項目にあたると思うのですがこれを消す方法と項目の名前を変更する方法ってありますか?
Selectも選択できますが、値は保存されないので、 などでも値は出力されないと思います。
この「Select」という文字は設定では変更できませんのでカスタマイズが必要になりますが、「rc-custom-field-gui-common.class.php」など(common,page,postのいずれか)209行目付近に次のソースがあると思います。
'<option value="">Select</option>';
この「Select」の文言を変えればOKです。日本語にする場合は、ファイルをUTF-8で保存してください。