Преобразуйте страницу параметров темы для использования в customize.php тоже?


Я разработал страницу параметров темы, которая представляет собой страницу внешнего вида подменю. Но теперь мне нравится знать, как то, что мне нужно сделать, чтобы параметры темы также можно было редактировать в интерфейсе тема->настройка. (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

С уважением,

Author: alex, 2014-08-24

1 answers

Вам нужно добавить к нему элемент управления.

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' );

Алекс убедитесь, что вы включили параметры в свои шаблоны, иначе вы не увидите никаких изменений. Например, если вы хотите изменить параметры во всех шаблонах, убедитесь, что вы действительно помещаете этот параметр в заголовок или во все файлы, которые потребуется изменить.

Поэтому для приведенного выше кода я бы использовал что-то подобное и поместил его в свой 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
Author: Bryan Willis, 2014-08-24 23:07:38