一般設定ではないですが、タイトルとカスタムフィールドだけのカスタムポストを作り、カスタムポストのラベルを「拡張設定」とかにすれば、それらしくなります。
テンプレートからは、そのカスタムポストのカスタムフィールドで定義したものを、get_post_meta(custom_post_id,key,true);
で参照すればOK。
azunaiさん、こんにちは。
一般設定画面に設定項目を増やすには
- 当該設定画面で扱える項目名(英数字)を追加
- 管理画面での表示項目名と表示するフォームを書き出す関数を登録
- フォームを書き出す関数を作成
と幾つかの手順が必要です。
下記にサンプルとして、連絡先の項目を追加するコードを書いてみました。(未検証)
一般設定だけでなく、同様の手法で、他の設定ページにも項目を追加できるよう、コメントを記述しましたので、参考にしてください。
記述箇所は、テーマのfunctions.phpに追記していただければ良いかと思います。
// whitelist_optionsにフックし、有効な項目名にcontact_infoを追加。
// $whitelist_optionsは設定画面で有効な項目名の配列
// generalは、一般設定。その他、discussion、media、privacy、reading、writing、optionsが記述可能
function add_contact_info_field( $whitelist_options ) {
$whitelist_options['general'][] = 'contact_info';
return $whitelist_options;
}
add_filter( 'whitelist_options', 'add_contact_info_field' );
// add_settings_field関数を用いて、一般設定画面に表示項目を追加。
// contact_infoは、$whitelist_optionsに追加した項目名、連絡先は項目の表示名。display_contact_infoは、フォームを表示させる関数名。generalは一般設定画面。
function regist_contact_info_field() {
add_settings_field( 'contact_info', '連絡先', 'display_contact_info', 'general' );
}
add_action( 'admin_init', 'regist_contact_info_field' );
// 一般設定でのフォームを表示する関数。
// DBへの保存は、WordPressが自動的に行ってくれる。ただし、ファイルアップロードは対応不可能。
function display_contact_info() {
$contact_info = get_option( 'contact_info' );
?>
<textarea cols="70" rows="3" name="contact_info"><?php echo esc_html( $contact_info ); ?></textarea>
<?php
}
表示は、残念なことに bloginfoでは表示できませんので、
<?php
echo get_option( 'contact_info' );
?>
というように記述します。
pluto1234さん、ありがとうございます。
カスタムポストはCodexにあるカスタム投稿タイプのことですね。
この機能は3.0からなので(違っていたらごめんなさい)、設置したいWPのバージョンが2.9.2のため使えないのです。
現在、諸事情あってバージョンUPできないため、残念ですが断念します;;
でも、今まで理解できなったカスタムポストの使い方のヒントが得られました。
アドバイス、ありがとうございました!
jim912さん、ありがとうございます。
記述頂いたコードを試してみました。
希望どおりに入力フォームができ、任意の個所に表示することができました。
add_settings_field
関数を用いるのですね。また一つ、関数の使い方を知ることができました。
サンプルコードもありがとうございました!