it-swarm.com.ru

Создайте еще один флажок "Отображать заголовок сайта и слоган", настройку и цвет заголовка.

Когда вы включите Custom_Headers support для вашей темы с помощью следующего кода, появится флажок "Отображать заголовок сайта и слоган" в разделе "Идентичность сайта" и элемент управления "Цвет текста заголовка" в разделе "Цвет":

/**
 * Set up the WordPress core custom header feature.
 */
function theme_custom_header_setup() {
    add_theme_support( 'custom-header', array(
        // Default arguments
    ) );
}
add_action( 'after_setup_theme', 'theme_custom_header_setup' );

У меня вопрос, как я могу создать еще один флажок "Отображать заголовок сайта и слоган", параметр "Цвет заголовка" и элемент управления с теми же функциями, что указаны в списке?

  1. Элемент управления цветом будет деактивирован/исчезнет, ​​если флажок снят асинхронно, не обновится и снова появится, если установлен флажок.
  2. Элементы управления имеют только 1 настройку, потому что когда флажок снят, параметр header_textcolor превратится в пустое значение.

Я попытался создать 1 параметр с 2 элементами управления, но, похоже, не работает:

function theme_customize_register( $wp_customize ) {

    $wp_customize->add_setting( 'tagline_textcolor', array(
        'transport'   => 'postMessage',
    ) );
    $wp_customize->add_control( 'tagline_textcolor', array(
        'type'        => 'checkbox',
        'section'     => 'title_tagline',
        'label'       => __( 'Display Tagline Text', 'theme_name' ),
    ) );
    $wp_customize->add_control(
            new WP_Customize_Color_Control(
                    $wp_customize,
                    'tagline_textcolor',
                    array(
                        'label'           => __( 'Tagline Text Color', 'theme_name' ),
                        'section'         => 'title_tagline',
                        )
                    )
            );
}
add_action( 'customize_register', 'theme_customize_register' );

Можете ли вы помочь мне с этим, или дать мне правильную идею?

1
5ervant

Если настройки и элементы управления добавляются в точности так, как они отображаются в class-wp-customize-manager.php, скрипт JQuery в wp-admin/custom-header.php правильно переключит управление цветом текста заголовка. Строка theme_supports должна быть закомментирована или удалена, поскольку она "используется для скрытия настроек, если в теме отсутствует поддержка определенной функции".[ 1 ]

add_action( 'customize_register', function ( $wp_customize ) {

    $wp_customize->add_setting( 'header_textcolor', array(
        // 'theme_supports' => array( 'custom-header', 'header-text' ),
        'default'        => get_theme_support( 'custom-header', 'default-text-color' ),

        'sanitize_callback'    => array( $wp_customize, '_sanitize_header_textcolor' ),
        'sanitize_js_callback' => 'maybe_hash_hex_color',
    ) );

    $wp_customize->add_control( 'display_header_text', array(
        'settings' => 'header_textcolor',
        'label'    => __( 'Display Site Title and Tagline' ),
        'section'  => 'title_tagline',
        'type'     => 'checkbox',
        'priority' => 40,
    ) );

    $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'header_textcolor', array(
        'label'   => __( 'Header Text Color' ),
        'section' => 'colors',
    ) ) );
});
1
Spencer