web-dev-qa-db-ja.com

add_settings_fieldを正しく使用しますか?

設定メニューに詳細を追加するためにadd_settings_fieldを使用していますが、設定をどのように保存するか、またはテーマにそれらを呼び出すかについてはわかりません。

これがこれまでのコードです。

add_action('admin_init','vimeo_setup');

function vimeo_setup(){
add_settings_field('vimeo_id','Vimeo ID','display_vimeo','general');
}

function display_vimeo(){

 echo '<input  type="text" name="vimeo_id" id="vimeo_id" value="" size="30" style="width:85%" />';
 echo '<p><small> Enter your Vimeo ID here.</small></p>';
}
3
Mild Fuzz

add_settings_field()のドキュメント 以下のように言います。

この関数で使用されるオプションは、 register_setting() で登録する必要があります。そうしないと保存されません。自動的に更新されます。

4
Rarst

設定フィールドを追加するには、そのフィールドを登録済みセクションに登録する必要があります。

ですから、これはあなた自身の登録されたセクションと一緒に使われなければならないか、あるいは既存のセクションに追加するためのフィールドである必要があります(オプションページ全体のもののように)。

見る。 http://codex.wordpress.org/Function_Reference/add_settings_section

すべての登録されたセクションとフィールドにコールバックを提供しなければならないという理由で、これらはプラグインオプションページの作成などに関してはあまり良いとは言えません。 5〜6フィールドの3〜4セクションがある場合は必要です。もちろん、パラメータを渡して動的コールバックを作成することもできます(したがって、1つのセクションに対して1つのコールバックと1つのフィールドに対して1つのコールバックのみが必要です)。 。

個人的には、自分のオプション/設定を登録し、自分のセクション/フィールドを印刷して、すべての設定をカバーするために一回だけ電話をかけるのが良いと思います。

// 1: Reference, 2: Option name, 3: Callback function to sanitize the data
register_setting( 'reference_name', 'option_name', 'example_callback' );

それからあなたがあなたの様々なオプションフィールドを印刷するところはどこでも、あなたはたくさんをカバーする一回だけ印刷する必要があります..

settings_fields( 'reference_name' ); 

さまざまなセクションやフィールドを登録した場合は、登録したセクションごとにこれを行う必要があります。

do_settings_sections('your_section');

カスタムオプションを設定する唯一の重要な点は、設定を登録してそのデータを適切にサニタイズするときに必ず独自のコールバックを定義することです(register_settingの3番目のパラメータ)。

3
t31os