サポート » 使い方全般 » 一般設定に入力項目を追加したい

  • 解決済 azunai

    (@azunai)


    管理画面の一般設定に、ブログの説明文のように、テンプレート内にbloginfo(‘description’)`で表示できるような項目を増やす方法を探しています。
    例えば、ブログ作成者の連絡先(住所など)を入力フォームに記入すると、テンプレート内の任意の場所(フッターなど)に表示されるというようにしたいのですが、
    コアファイルに追加しない方法(プラグインとか)でないでしょうか?
    どなたかアドバイスをお願い致します。
    利用バージョン2.9.2
    設置環境 PHP 4.3 MySQL 4.1.2

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • 一般設定ではないですが、タイトルとカスタムフィールドだけのカスタムポストを作り、カスタムポストのラベルを「拡張設定」とかにすれば、それらしくなります。

    テンプレートからは、そのカスタムポストのカスタムフィールドで定義したものを、get_post_meta(custom_post_id,key,true);
    で参照すればOK。

    モデレーター jim912

    (@jim912)

    azunaiさん、こんにちは。

    一般設定画面に設定項目を増やすには

    1. 当該設定画面で扱える項目名(英数字)を追加
    2. 管理画面での表示項目名と表示するフォームを書き出す関数を登録
    3. フォームを書き出す関数を作成

    と幾つかの手順が必要です。

    下記にサンプルとして、連絡先の項目を追加するコードを書いてみました。(未検証)
    一般設定だけでなく、同様の手法で、他の設定ページにも項目を追加できるよう、コメントを記述しましたので、参考にしてください。
    記述箇所は、テーマの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' );
    ?>

    というように記述します。

    スレッド開始 azunai

    (@azunai)

    pluto1234さん、ありがとうございます。

    カスタムポストはCodexにあるカスタム投稿タイプのことですね。
    この機能は3.0からなので(違っていたらごめんなさい)、設置したいWPのバージョンが2.9.2のため使えないのです。
    現在、諸事情あってバージョンUPできないため、残念ですが断念します;;
    でも、今まで理解できなったカスタムポストの使い方のヒントが得られました。
    アドバイス、ありがとうございました!

    jim912さん、ありがとうございます。

    記述頂いたコードを試してみました。
    希望どおりに入力フォームができ、任意の個所に表示することができました。
    add_settings_field関数を用いるのですね。また一つ、関数の使い方を知ることができました。
    サンプルコードもありがとうございました!

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「一般設定に入力項目を追加したい」には新たに返信することはできません。