オプションと設定の違いは何ですか?


14

そして、どれを使うべきですか?

Options APISetings APIの違いは何ですか?

100を超える管理オプションを持つテーマがありますが、それらを登録および保存するにはどうすればよいですか?現時点では、オプションAPIを使用していますが、あまり満足していません。すべてのオプションが個別に登録されているため、多くのデータベースクエリが作成されます。

現在、WordPressのオプション/設定を保存する方法は3つあります。

1.オプションAPI-古い(最悪の)方法。

(私はすでにこれを使用しています)

<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>        

// all the inputs

<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="option1,option2,option3,..." />
<p class="submit">
<input type="submit" value="<?php _e('Save Changes') ?>" />
</p>
</form>

そして、フロントエンドで:

echo get_option('option1'); 

Looksいように見えますが、それが多数のオプションを保存する正しい方法だとは思いません(どうにかしてそれらをグループ化したいです)。

2.オプションAPI-大きな配列として1つのオプション。

ここでは、HTMLフォームを使用してこの配列を更新する方法がわかりません、誰か?私はそれが次のようになると信じています:

$opt['option1'] = foo
$opt['option2'] = foo
$opt['option3'] = bar

update_option('theme_settings',$opt);

そして、フロントエンドで:

$settings = get_option('theme_settings');
echo $settings['option1']; 
echo $settings['option2']; 
echo $settings['option3']; 

私はそれが本当にクエリの数を減らすと聞きました、そして、私はそれらをすべて1つのオプションとして持っています。これを使いたいのですが、上で述べたように、Wordpress管理フォーム内でこのオプションの配列を更新する方法がわかりません。私は推測します:<input type="hidden" name="theme_settings" value="option1,option2,option3,..." />新しい要素を追加する代わりに配列を上書きしますか?

3.設定API-新しい方法。

多くの追加コードが必要です。

function register_theme_settings() {
    //register our settings   
    register_setting( 'theme-settings', 'option1' );     
    register_setting( 'theme-settings', 'option2' );     
    register_setting( 'theme-settings', 'option3' );     
    register_setting( 'theme-settings', 'option4' );     
    register_setting( 'theme-settings', 'option5' );     
    // imagine this for 100 and more options    
};

そして、これと配列として1つのオプションを持つメソッドの違いはわかりませんか?

TL; DRそれがされますので、だから、どのように私は私のテーマ設定の保存を予測する必要があり、高速作業保管、すべてのオプション/設定を一箇所に、私は、例えば、エコー/ 1簡単な関数でそれらすべてをダンプすることができますので、はい( 、私はそれをひどくやりたいが、このSettings APIでそれを行う方法がわからない。これまでのところ、2番目の方法が最適です。

回答:


11

オプションAPIは主にデータベースAPIであり、データベースのオプションテーブルに値を簡単に取得して保存できます。

設定APIはインターフェースAPIです。WordPressインターフェースの将来の変更に適応する方法で設定画面を構築できるほか、独自のコードをローリングするよりも自動的かつ簡単にセキュリティ(ナンス、ホワイトリスト、検証など)を処理できます。

Settings APIの詳細:http : //ottopress.com/2009/wordpress-settings-api-tutorial/


3
+1。設定APIは正しいアプローチであり、目をつぶることなく100のテーマオプションを処理します。一部のバカは、WordPressテーマにSettings API組み込むための非常に長いチュートリアルを書きました。
チップベネット

オットー、@チップ・ベネット、ありがとう。もう1つ質問があります。ドキュメントによると、管理ページごとに複数の設定グループを作成する必要がありますが、パフォーマンス/クエリ数に何らかの影響がありますか 読みづらい質問で説明したように、すべてのオプションを1つのグループ(「テーマ設定」と呼びます)内に保持することに問題はありませんか?:)
Wordpressor

2
1つのオプショングループのみを使用することをお勧めします。UIの整理が必要な場合は、設定セクションまたは設定ページのタブを使用します。
チップベネット

@チップベネット、申し分なく、どうもありがとう:)素晴らしいチュートリアルところで。
Wordpressor

@ChipBennettリンク:WordPressテーマの設定APIをコメントに組み込むことはできません。
ビジェイチャブダ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.