Các trường wp_editor () trên Trang Tùy chọn chủ đề không lưu


7

(Đây là loại tiếp theo cho câu hỏi này .)

Tôi có thể hiển thị hai trình soạn thảo WYSIWYG trên trang tùy chọn chủ đề của mình, nhưng các giá trị tôi nhập vào trình chỉnh sửa không được lưu. Tôi đã đọc một tấn của thứ về API Cài đặtwp_editor () với hy vọng làm công việc này theo cách WordPress thân thiện nhất. Tôi cảm thấy như tôi vẫn chưa tìm thấy một lời giải thích tốt về cách thực hiện wp_editor()công việc trong cài đặt chủ đề trong khi vẫn lưu đúng theo API Cài đặt.

Tôi có cảm giác rằng, mặc dù các wp_editor()cuộc gọi nằm trong các cuộc gọi lại trường cài đặt có liên quan, quá trình Lưu không nhận ra rằng các trình soạn thảo được liên kết với các tùy chọn hợp lệ.

Mã liên quan từ các tùy chọn chủ đề của tôi ở bên dưới:

//register settings
add_action( 'admin_init', 'us_register_settings' );
function us_register_settings() {
    add_settings_section( 'us_settings', 'Settings', 'us_settings_section_cb', 'us_options' );
    register_setting( 'us_settings', 'us_authors_desc', 'us_sanitize_wysiwyg' );
    register_setting( 'us_settings', 'us_partners_desc', 'us_sanitize_wysiwyg' );
    add_settings_field( 'us_authors_desc', 'Author Archives Descriptions', 'us_authors_cb', 'us_options', 'us_settings' );
    add_settings_field( 'us_partners_desc', 'Partners Archives Descriptions', 'us_partners_cb', 'us_options', 'us_settings' );
}

function us_settings_section_cb() {
    // no need for text here right now
}

function us_authors_cb() {
    $us_author_desc = get_option( 'us_authors_desc' );
    echo wp_editor( $us_author_desc, 'usauthorsdesc' );
}

function us_partners_cb() {
    $us_partners_desc = get_option( 'us_partners_desc' );
    echo wp_editor( $us_partners_desc, 'uspartnersdesc' );
}

function us_sanitize_wysiwyg( $input ) {
    return $input;
}

function us_options_page() {
?>

<div class="wrap">

    <h2>Options</h2>

    <form method="post" action="options.php">

    <?php
    settings_fields( 'us_settings' );
    do_settings_sections( 'us_options' );
    ?>

    <input name="Submit" class="button-primary" type="submit" value="<?php esc_attr_e('Save Changes'); ?>" />

    </form>

</div>

<?php
}

EDIT: Ngay bây giờ, tôi cũng không sử dụng cuộc gọi lại trên cài đặt của mình. Có phải đó có thể là vấn đề?

CẬP NHẬT: Đã thêm chức năng gọi lại trong mã. Không khác nhau.

Câu trả lời:


9

Bạn cần thêm một thuộc tính tên cho biên tập viên của bạn. Thuộc tính name cần được đặt thành giá trị của tùy chọn của bạn, như thế này:

function us_partners_cb() {
    $us_partners_desc = get_option( 'us_partners_desc' );
    echo wp_editor( $us_partners_desc, 'uspartnersdesc', array('textarea_name' => 'us_partners_desc')  );
}

Tuyệt vời, vui mừng được giúp đỡ.
Pippin

1
Cảm ơn Pippin! Tôi đã dành hàng giờ cố gắng để tìm ra điều này. Không thể tin đó là tất cả ...
Jeremiah Prummer 31/03 '
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.