私はオプションページをまとめるために オプションフレームワークのテーマ を使っています。これを構築しているユーザーは、次のものを含む、このページから直接いくつかの設定を編集できるようにしたいと思います - Site Titleおよびタグライン。
概念:
Options.php:
$options[] = array(
'name' => __('Site Title', 'options_framework_theme'),
'desc' => __('The name of your site.', 'options_framework_theme'),
'id' => 'title',
'std' => 'PHP CODE FOR SITE TITLE HERE ...',
'class' => 'medium',
'type' => 'text');
のためのテキストフィールド内でこれを行う(独自のSite TitleおよびTaglinesを追加する)方法はありますたとえば、[オプションの保存]ボタンをクリックしてサイトのフロントエンドに出力し、WP API設定>一般設定サブメニューページに更新されたバージョンを表示します。
フレームワークはoptionsframework_validate
関数内の入力値を検証するためのフィルタを提供します。
参考までに、ファイルの関連部分wp-content/themes/your-theme/inc/options-framework.php
を次に示します。
/**
* Validate Options.
*
* This runs after the submit/reset button has been clicked and
* validates the inputs.
*/
function optionsframework_validate( $input ) {
/* code */
$clean[$id] = apply_filters( 'of_sanitize_' . $option['type'], $input[$id], $option );
/* code */
そのため、ファイルに次のオプションがあることを考慮してwp-content/themes/your-theme/options.php
:
$options[] = array(
'name' => __('Input Text Mini', 'options_framework_theme'),
'desc' => __('A mini text input field.', 'options_framework_theme'),
'id' => 'blogname',
'std' => 'Default',
'class' => 'mini',
'type' => 'text');
$options[] = array(
'name' => __('Input Text', 'options_framework_theme'),
'desc' => __('A text input field.', 'options_framework_theme'),
'id' => 'blogdescription',
'std' => 'Default Value',
'type' => 'text');
そして、wp-content/themes/your-theme/functions.php
では、text
の入力タイプ(of_sanitize_
+text
そしてそれが私たちの定義されたID(一般設定と同じようにblogname
とblogdescription
)にマッチするなら、それは同じidを持つサイトオプションを更新するでしょう。
これは他の方法ではうまくいかないことに注意してください。Settings -> General
で行われた変更はテーマオプションページに反映されません...
add_filter( 'of_sanitize_text', 'wpse_77233_framework_to_settings', 10, 2 );
function wpse_77233_framework_to_settings( $input, $option )
{
if( 'blogname' == $option['id'] )
update_option( 'blogname', sanitize_text_field( $input ) );
if( 'blogdescription' == $option['id'] )
update_option( 'blogdescription', sanitize_text_field( $input ) );
return $input;
}