Sử dụng TinyMce với textareas trong hộp meta trên các loại bài đăng tùy chỉnh


7

Tôi đang cố gắng sử dụng plugin http://www.tinymce.com/ để thêm tinymce vào textareas của tôi trong các hộp meta mà tôi đã tạo. Tôi đã googled các cách khác và tôi không thể làm cho nó hoạt động hoặc không nắm bắt được khái niệm. Vì đây là những gì tôi đang cố gắng bây giờ -

Tôi đã thử tạo plugin để thêm tập lệnh vào bảng điều khiển quản trị của mình -

add_action('admin_init', 'admin_load_scripts'); 
function admin_load_scripts() { 
    $js_file = plugins_url( '/tinymce/jquery.tinymce.min.js', __FILE__ );  
    wp_enqueue_script('jquery.tinymce.min', $js_file, array('jquery')); 
}

Sau đó, tôi cần phải gọi nó như vậy -

<script>
        tinymce.init({selector:'textarea'});
</script>

Nhưng tôi không chắc làm thế nào để làm điều này, vì đây là phần cuối và không phải phần đầu. Làm thế nào tôi có thể đạt được điều này?

CẬP NHẬT

Đây là mã của tôi cho các hộp meta. http://pastebin.com/WcC51uA9

Tôi đã thử các phương pháp sau (dĩ nhiên là đặt nó vào hàm.php) và đối với hầu hết các phần chúng chỉ không hoạt động hoặc sẽ hiển thị trên đầu trang hoặc dưới cùng của trang. Họ đã không xuất hiện trên textarea cả. ---

http://pastebin.com/Ct0mF6q7

http://pastebin.com/R6t0ij6h

http://pastebin.com/dcczcVby

http://pastebin.com/yt1uRS5U


Tại sao không sử dụng wp_editor()chức năng?
xe đạp

Câu trả lời:


14

Đây là một pastebin với mã của bạn bao gồm.

Nhận giá trị cũ của tinyMCE

$meta_biography = get_post_meta( $post->ID, 'meta_biography', true );

Gọi cho Biên tập viên TinyMCE

wp_editor( $meta_biography, 'biography', array(
    'wpautop'       => true,
    'media_buttons' => false,
    'textarea_name' => 'meta_biography',
    'textarea_rows' => 10,
    'teeny'         => true
) );

Lưu Giá trị Trình chỉnh sửa hoặc nếu không có gì - xóa các giá trị cũ.

if( isset( $_POST['meta_biography'] ) && $_POST['meta_biography'] != '' ) {
    update_post_meta( $post_id, 'meta_biography', $_POST['meta_biography'] );
} else {
    delete_post_meta( $post_id, 'meta_biography' );
}

Nếu bạn muốn thêm nhiều tùy chọn hơn vào trình chỉnh sửa - Bạn có thể xem Codex hoặc Kiểm tra Điều khoản WPTuts tuyệt vời này . Bạn muốn sử dụng tinymcevà truyền cho nó một loạt các cài đặt. Bạn có thể phải xóa phần teeny => truetrong wp_editor()vì Codex nói rằng nó sẽ chỉ sử dụng cấu hình trình chỉnh sửa tối thiểu.


cảm ơn. Một câu hỏi cuối cùng tôi có là, tôi đã thấy bài viết về wptuts và mảng cài đặt, nhưng tôi không thấy đề cập gì về việc chuyển vào một mảng cài đặt cho "bồn rửa nhà bếp". Bất cứ ý tưởng về điều đó? Tôi muốn tạo một trình soạn thảo cho một lĩnh vực khác chỉ cho phép thay đổi màu phông chữ.
Giàu

@ mygm26 - trong Bài viết của WPTuts, nó đang vượt qua theme_advanced_buttons1- nếu bạn muốn một hàng thứ hai, bạn cũng có thể vượt qua theme_advanced_buttons2hoặc tuy nhiên nhiều hàng bạn muốn. Trong bài viết WPTuts, nó cũng có wp_advở cuối theme_advanced_buttons1mà bạn cần để hiển thị hàng nút thứ 2 hoặc thứ 3 của bạn. Nếu bạn chỉ đang cố gắng thay đổi màu sắc - tôi có thể khuyên bạn nên xem xét Bộ chọn màu cũng được tích hợp trong Wordpress.
Howdy_McGee

Ok tôi hiểu rồi, cảm ơn. Có cách nào để ẩn bồn rửa nhà bếp trong các trường hợp cụ thể? Tôi đang sử dụng mã trình soạn thảo wp cho nhiều textareas nhưng muốn ẩn bồn rửa chén trên một trong số chúng @Howdy_McGee
Rich

@ mygm26 Điều đó tôi không chắc chắn 100% và đang cố gắng tìm câu trả lời - bạn có thể tham khảo câu hỏi này nhưng nếu bạn đã tìm ra nó, hãy để tôi biết: wordpress.stackexchange.com/questions/117395/
Khăn

2
// for pages use 'edit_page_form' as the first parameter. And see my comment below.
add_action( 'edit_form_advanced', 'my_meta_editor' ); 

function my_meta_editor() {

    // set 'your_meta_key' to the actual key
    $content = get_post_meta($post->ID, 'your_meta_key', true);

    // only low case [a-z], no hyphens and underscores
    $editor = 'mymetaeditor';

    // See my comment below
    $editor_settings = array();

    wp_editor( $content, $editor, $editor_settings);

}

Tìm kiếm Actions hành chính cho edit_form_after_title, edit_form_after_editor, edit_form_advancednếu bạn muốn thay đổi vị trí của hộp meta.

Đồng thời xem wp_editor để cài đặt trình chỉnh sửa.


cảm ơn câu trả lời, tôi không chắc làm thế nào để áp dụng điều này vào tình huống của tôi. Tôi sẽ cập nhật câu trả lời của tôi với mã tôi đang sử dụng để tạo metaboxes của tôi.
Giàu

Bất cứ khi nào bạn muốn tinymce, bạn chỉ có thể nói một cái gì đó như: pastebin.com/6N5adFip - Theo kinh nghiệm của tôi, điều này tốt nhất là đặt trong một khu vực nội dung lớn, chẳng hạn như bên dưới Trình chỉnh sửa bài chính của bạn hoặc những gì có bạn.
Howdy_McGee

@Howdy_McGee ok vậy nếu tôi đặt mã từ pastebin vào tệp chức năng chủ đề của mình và thay thế id, thì nó sẽ kết xuất trình chỉnh sửa cho textarea đó?
Giàu

Về mặt lý thuyết là có, tất cả @MaxYudin đã cung cấp cho bạn là cách để hiển thị wp_editor (); bạn sẽ có thể làm cho nó hoạt động từ đó. nó khá thẳng về phía trước. Nếu không, một tìm kiếm nhanh sẽ mang lại nhiều kết quả . Hãy cho tôi biết nếu bạn có thể làm cho nó hoạt động!
Howdy_McGee

1
Dán nó vào functions.phpvị trí trong themethư mục bạn sử dụng.
Max Yudin

1

Hàm này hoạt động hoàn hảo đối với tôi chỉ cần thêm vào tệp tin.php của bạn và làm cho các trường tùy chỉnh của bạn trở thành văn bản và bạn đã hoàn tất:

//add tinymce editor to custom fields
function admin_add_wysiwyg_custom_field_textarea()
{ ?>
<script type="text/javascript">/* <![CDATA[ */
    jQuery(function($){
        var i=1;
        $('textarea').each(function(e)
        {
          var id = $(this).attr('id');
          if (!id)
          {
           id = 'customEditor-' + i++;
           $(this).attr('id',id);
          }
          tinyMCE.execCommand("mceAddEditor", false, id);
          tinyMCE.execCommand('mceAddControl', false, id);
        });
    });
/* ]]> */</script>
<?php }
add_action( 'admin_print_footer_scripts', 'admin_add_wysiwyg_custom_field_textarea', 99 );

Lấy từ đây .

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.