そしてどちらを使うべきですか?
100以上の管理オプションがあるテーマがあります。登録して保存するにはどうすればよいですか。現時点では、 Options APIを使用しています しかし、あまり満足していません。すべてのオプションが個別に登録されているため、多くのデータベースクエリが作成されます。
現時点では、WordPressのオプション/設定を保存する方法が3つあります。
(私はすでにこれを使っています)
<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');
醜く見えます、そして、私はそれがたくさんのオプションを保存するための正しい方法であるとは思いません(私はどういうわけかそれらをグループ化したいです)。
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,..." />
は新しい要素を追加する代わりに配列を上書きしますか?
たくさんの追加コードが必要です。
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番目の方法はこれまでのところ最高に見えます。
Options APIは主にデータベースAPIであり、データベースのオプションテーブルの値を簡単に取得および格納できます。
設定APIはインターフェースAPIです。それはあなたがWordPressインターフェースへの将来の変更に適応するような方法で設定スクリーンを構築することを可能にし、そして自動的にそしてあなた自身のコードを転がすより自動的にセキュリティ(ナンスとホワイトリストと検証など)を扱う。
設定APIの詳細: http://ottopress.com/2009/wordpress-settings-api-tutorial/ /