Thêm một hộp kiểm vào tùy biến chủ đề


7

Khi cố gắng thêm một hộp kiểm vào tùy biến chủ đề, nó dường như được chọn 'luôn luôn'. Nếu bạn cố gắng bỏ chọn nó, bạn không thể, gần như là có một số mã JS buộc nó phải được chọn.

Tôi đang sử dụng các tùy chọn chủ đề nối tiếp và mọi thứ được nối chính xác. Mã tương tự như sau (được kích hoạt thông qua hook 'custom_register'):

$wp_customize->add_setting( mytheme_options[chk_hide_description], array(
    'default'        => false,
    'type'           => 'option',
    'capability'     => 'edit_theme_options' )
);

$wp_customize->add_control( 'display_header_text', array(
    'settings' => mytheme_options[chk_hide_description],
    'label'    => __( 'Hide site description' ),
    'section'  => 'title_tagline',
    'type'     => 'checkbox',
) );

Vấn đề tương tự được báo cáo ở đây: http://ottopress.com/2012/how-to-leenses-the-theme-customizer-in-your-own-theme/#div-comment-11254 .


này, bạn đã giải quyết vấn đề này chưa? Tương tự ở đây. Nó được kiểm tra bằng cách nào đó thông qua JS. Nhận xét về ottopress với 'ID duy nhất' không giúp ích gì cho tôi.
xsonic

1
Vấn đề của tôi đã được giải quyết khi tôi đảm bảo ID được sử dụng trong $ wp_customize-> add_control () là duy nhất.
dgwyer

@dgwyer, xin vui lòng, thêm giải pháp của bạn dưới dạng Câu trả lời, vì vậy Câu hỏi này không nằm trong danh sách "Chưa trả lời".
brasofilo

Làm thế nào để làm điều đó?
dgwyer

Câu trả lời:


4

Hộp kiểm là có thể. Một ví dụ, tôi hy vọng điều này sẽ giúp bạn.

Đầu tiên bạn phải xác định cài đặt, thông qua add_setting, quan trọng là tham số typecó giá trị option. Sau đó, điều khiển trường thông qua add_controlvà đặt param typethành checkbox. Thay thế nó có thể sử dụng select. Nếu tôi thêm một giá trị mặc định thông qua std, thì nó cũng không có thông số này. Thay thế cũng hoạt động tốt, nếu tôi thêm tham số lựa chọn với các giá trị 1 và 0. Nhưng trên các bài kiểm tra hoạt động tốt, nếu tôi chỉ đặt tham số thành checkbox. Bạn tìm nguồn bên trong dự án của tôi, xem liên kết dưới đây.

Ngoài ra, bạn có thể gỡ lỗi đầu ra trên chuỗi giá trị trên dòng 246 trong wp-gộp / class-wp-custom-control.php; có lẽ nó giúp

gỡ lỗi:

    case 'checkbox':
        var_dump( $this->value() );

Thí dụ:

    // Add settings for output description
    $wp_customize->add_setting( $this->option_key . '[echo_desc]', array(
        'default'    => $defaults['echo_desc'],
        'type'       => 'option',
        'capability' => 'edit_theme_options'
    ) );

    // Add control and output for select field
    $wp_customize->add_control( $this->option_key . '_echo_desc', array(
        'label'      => __( 'Display Description', 'documentation' ),
        'section'    => 'title_tagline',
        'settings'   => $this->option_key . '[echo_desc]',
        'type'       => 'checkbox',
        'std'        => '1'
    ) );

Xem kết quả của nguồn này. ảnh chụp màn hình mô tả hộp kiểm trong tùy biến WordPress

Bạn tìm thấy một kết quả làm việc trong Tài liệu chủ đề của tôi , được lưu trữ trên Github .


3

Tôi đã có một vấn đề tương tự, và hóa ra thiết lập 'type' => 'option'cho đó add_settinglà nguyên nhân.

Loại bỏ điều này đã giải quyết vấn đề của tôi, và dưới đây là những gì tôi hiện đang sử dụng và nó hoạt động tốt.

$wp_customize->add_section('footer_social_media_section' , array(
    'title'     => __('Footer Social Media', 'dd_theme'),
    'priority'  => 1020
));

$wp_customize->add_setting('show_footer_facebook', array(
    'default'    => '1'
));

$wp_customize->add_control(
    new WP_Customize_Control(
        $wp_customize,
        'show_footer_facebook',
        array(
            'label'     => __('Show Facebook Link', 'dd_theme'),
            'section'   => 'footer_social_media_section',
            'settings'  => 'show_footer_facebook',
            'type'      => 'checkbox',
        )
    )
);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.