web-dev-qa-db-ja.com

Customize.phpでも使用するようにテーマオプションページを変換しますか?

外観のサブメニューページであるテーマオプションページを開発しました。しかし今、私はテーマオプションがtheme-> customizeインターフェースで編集可能であるために私が何をする必要があるかを知りたいのです。 (customize.php).

私はこれをfunctions.phpに追加して簡単なテストを試み、カスタマイズメニューが変更されているかどうかを確認します。

//for customize.php
function mytheme_customize_register( $wp_customize ) {
   //All our sections, settings, and controls will be added here
   //1. Define a new section (if desired) to the Theme Customizer
      $wp_customize->add_section( 'mytheme_options', 
         array(
            'title' => __( 'MyTheme Options', 'ppr' ), //Visible title of section
            'priority' => 35, //Determines what order this appears in
            'capability' => 'edit_theme_options', //Capability needed to Tweak
            'description' => __('Allows you to customize some example settings for MyTheme.', 'ppr'), //Descriptive tooltip
         ) 
      );

      //2. Register new settings to the WP database...
      $wp_customize->add_setting( 'link_textcolor', //No need to use a SERIALIZED name, as `theme_mod` settings already live under one db record
         array(
            'default' => '#2BA6CB', //Default setting/value to save
            'type' => 'theme_mod', //Is this an 'option' or a 'theme_mod'?
            'capability' => 'edit_theme_options', //Optional. Special permissions for accessing this setting.
            'transport' => 'postMessage', //What triggers a refresh of the setting? 'refresh' or 'postMessage' (instant)?
         ) 
      );      

    //
}
add_action( 'customize_register', 'mytheme_customize_register' );
//end cutomize.php

について、

1
alex

あなたはそれにコントロールを追加する必要があります。

function mytheme_customize_register( $wp_customize ) {

  $wp_customize->add_section( 'mytheme_options', 
     array(
        'title' => __( 'MyTheme Options', 'ppr' ),
        'priority' => 35,
        'description' => __('Allows you to customize some example settings for MyTheme.', 'ppr'),
     ) 
  );

$wp_customize->add_setting( 'link_textcolor', array(
    'default' => get_option( 'your_theme_page_option_value' ), THIS IS THE OPTION NAME YOU CREATED WITH YOUR OPTIONS PAGE CODE
    'type' => 'option',  // FOR OPTIONS USE OPTION
    'capability' => 'edit_theme_options',
    'transport' => 'refresh', // WILL REFRESH INSTEAD OF JS. YOU HAVE TO WRITE JS TO MAKE UPDATE INSTANT... ITS A PAIN IN THE ASS http://codex.wordpress.org/Plugin_API/Action_Reference/customize_preview_init
) );


// THIS IS WHAT YOU WERE MISSING
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array(
    'label'        => __( 'Link Text Color', 'ppr' ),
    'section'    => 'mytheme_options', // ID OF SECTION ABOVE
    'settings'   => 'link_textcolor', // ID OF SETTINGS ABOVE
) ) );

}
 add_action( 'customize_register', 'mytheme_customize_register' );

Alexは、テンプレートにオプションが含まれていることを確認します。そうしないと、変更が表示されません。たとえば、すべてのテンプレートのオプションを使用したい場合は、実際にヘッダーまたは変更が必要なすべてのファイルの内側にオプションを配置してください。

それで、上記のコードのために私はこのような何かを使用して、そしてそれが私のheader.phpまたはそれがスタイルのためであればwp_headアクションを使う関数の中にさえそれを置くでしょう。

function mytheme_customizer_styles() {
        $link_text_color = get_option('your_theme_page_option_value'); // THIS IS THE OPTION VALUE THAT YOU CREATED WITH SETTINGS API AND YOUR CUSTOM OPTIONS PAGE AND IS ALSO THE NAME OF THE OPTIONS DEFINED IN THE `add_setting` field above.
    ?>
    <style type="text/css" id="mytheme-customizer-admin-header-css">
         .link-text-color { color:  <?php echo $link_text_color; ?>; }
    </style>
    <?php
}
add_action( 'wp_head', 'mytheme_customizer_styles', 9999); // JUST MAKE SURE THE PRIORITY IS LATE ENOUGH SO ITS NOT OVERRIDEEN
3
Bryan Willis