$shortname = "nuod";
array( "name" => "Custom Logo URL",
"desc" => "Enter the link to your site's custom logo.",
"id" => $shortname."_logo",
"type" => "text",
"std" => "newlogo.png")
Stdを<?php echo get_option('nuod_logo'); ?>
の値として自動的に設定する方法
@Ashfameが既に指摘したように、あなたはデータベースにデフォルトを保存するべきではありません - それはユーザーが選択したオプションのためのものであるべきです(もちろん、デフォルトが選択されたら、それからそれを保存してください)。
しかし、wp_parse_args()
も使う必要はありません。 get_option
では、デフォルト値を選択できます。例えば:
//If nuod_logo is not found, uses 'newlogo.pnp'
$number = get_option('nuod_logo', 'newlogo.png')
ただし、テーマやプラグインは(必要に応じて)データベース内の1行に格納されている配列にオプションを保持することがよくあります。そう
$my_plugin_options = get_option('my_plugins_options')
すべてのオプションを返すことが期待されています。そのため、すべてのオプションをデフォルトの配列$my_plugin_defaults
に入れることができます。
$my_plugin_options = get_option('my_plugins_options',$my_plugin_defaults)
しかし、これは素晴らしいことではありません - 単にコードを複製してバグの余地を残す醜い$my_plugin_defaults
を再宣言する必要があるか、または単に間違っているグローバル変数にする必要があります。解決策は、WordPressの設定APIを基にした独自の 'get_option
'を作成することです。
function wpse28954_get_option( $option_name='' ){
$defaults = array(
// Array of defaults: option => default value
)
$options = get_option('my_plugins_options',$defaults);
//Parse defaults again - see comments
$options = wp_parse_args( $options, $defaults );
if( !isset($options[$option_name]) )
return false;
return $options[$option_name];
}
これはwpse28954_get_option
がデフォルト値を定義されたデフォルト値内にない場合にデフォルト値を設定することを許可することによって改善されるかもしれません
これで、デフォルトは管理しやすい場所に保存され、wpse28954_get_option['my-option']
を使用して保存された設定またはそれ以外のデフォルト値を返すことができます。
AS @Ashfame はwp_parse_args
を使用してコメントで指摘しているように、保存されていないオプションのサブセットにデフォルトを提供するという利点があります。これを含めるように回答を更新しました。 (これは$defaults
のget_option
をかなり冗長にします)。 wp_parse_args
を使うことを最初に示唆した @Ashfame の解決策のための+1。
これは大部分の人々が正しく理解できない重要なことです。データベースにデフォルトを保存しないでください。この目的のためにはwp_parse_args()
を使うべきです。
$defaults = array (
'logo' => 'http://domain.com/logo.png',
'do_extra_thing' => false
);
// Parse incomming $args into an array and merge it with $defaults
$options = wp_parse_args( $options, $defaults );
$options
が空のとき、ちょうどあなたがプラグインをインストールしたように、それはあなたのデータベースに何も書かずにうまくいくことができます。そして、その中にいくつかの値があるとき、足りないものは$defaults
配列から来るでしょう。