web-dev-qa-db-ja.com

テーマオプションページのサイトのタイトルとタグライン

私はオプションページをまとめるために オプションフレームワークのテーマ を使っています。これを構築しているユーザーは、次のものを含む、このページから直接いくつかの設定を編集できるようにしたいと思います - Site Titleおよびタグライン

概念:

enter image description here

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 AP​​I設定>一般設定サブメニューページに更新されたバージョンを表示します。

4
user1752759

フレームワークは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(一般設定と同じようにblognameblogdescription)にマッチするなら、それは同じ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;
}
3
brasofilo