web-dev-qa-db-ja.com

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

そしてどちらを使うべきですか?

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

100以上の管理オプションがあるテーマがあります。登録して保存するにはどうすればよいですか。現時点では、 Options 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'); 

醜く見えます、そして、私はそれがたくさんのオプションを保存するための正しい方法であるとは思いません(私はどういうわけかそれらをグループ化したいです)。

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']; 

私はそれが本当にクエリの数を減らすのを聞いた、そして私はそれらを一つの選択肢として持っている。私はこれを使いたいのですが、私が上で述べたように私は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番目の方法はこれまでのところ最高に見えます。

12
Wordpressor

Options APIは主にデータベースAPIであり、データベースのオプションテーブルの値を簡単に取得および格納できます。

設定APIはインターフェースAPIです。それはあなたがWordPressインターフェースへの将来の変更に適応するような方法で設定スクリーンを構築することを可能にし、そして自動的にそしてあなた自身のコードを転がすより自動的にセキュリティ(ナンスとホワイトリストと検証など)を扱う。

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

11
Otto