0

クライアントがビジネスの詳細を追加できる[設定]メニューの[オプション]ページを設定する簡単なWordpressプラグインを作成しています。

すべてのフィールドを次のように登録します。

// Lets set an array for the inputs:
   $fields = array (
       array( "name",           "Business Name:"),
       array( "tagline",        "Business Tagline:"),
       array( "logo",           "Business Logo:"),
       array( "owner_name",     "Owner's Name:"),
       array( "owner_title",    "Owner's Title"),
       array( "address",        "Address:"),
       array( "city",           "City:"),
       array( "province",       "Province:"),
       array( "country",        "Country:"),
       array( "phone",          "Phone:"),
       array( "secondary_phone","Secondary Phone:"),
       array( "fax",            "Fax:"),
       array( "toll_free",      "Toll Free:"),
       array( "email",          "Email:"),
       array( "website",        "Website:"),
   );

   foreach($fields as $field) {
       //id, title (label), callback, page, section(from add_settings_section), args
       add_settings_field("business_{$field[0]}", $field[1], "business_{$field[0]}_setting", __FILE__, 'main_section');
   }

これは、配列の設定をループし、必要なすべてのフィールドを追加し、。を使用してコールバック関数への参照を設定するだけbusiness_{$field[0]}_settingです。

次に、次のようにそれぞれのコールバック関数を作成する必要があります。

function business_name_setting() {
  $options = get_option('plugin_options');  
  echo "<input name='plugin_options[business_name]' type='text' value='{$options['business_name']}' />";
}

基本的に同じである場合にすべてのコールバックを個別に作成することは非常に冗長であるため、これを行うためのより優雅な方法があると思います。

4

1 に答える 1

0

解決策は次のとおりです。

このadd_settings_field関数は 6 番目のパラメーターを取り、これをコールバック関数に渡します。の値を送信しました$field[0]add_settings_fieldまた、すべてのコールバックを と呼ばれるハンドラー関数に送信するように関数を設定しましたbusiness_setting

新しい foreach ループ:

foreach($fields as $field) {
       //id, title (label), callback, page, section(from add_settings_section), args
       add_settings_field("business_{$field[0]}", $field[1], "business_setting", __FILE__, 'main_section', $field[0]);
   }

以前から値が渡された新しいコールバック関数は、$field[0]そのキーを使用して正しい入力を作成できるようになりました。

function business_setting($field) {
  $options = get_option('plugin_options'); 
  $full_field = 'business_'.$field;
  echo "<input name='plugin_options[{$full_field}]' type='text' value='" . $options[$full_field] . "' />";
}
于 2012-05-24T21:40:44.370 に答える