วิธีโหลด wp_editor ผ่าน AJAX


17

ไม่มีใครรู้ว่าวิธีการโหลด wp_editor ผ่าน AJAX ใน WordPress?

มาร์กอัปและตัวแก้ไขของฉันกำลังโหลดอย่างถูกต้อง แต่ตัวควบคุมตัวแก้ไขไม่สามารถโหลดได้อย่างถูกต้องอาจเป็นเพราะ Javascript ไม่ทำงานในการโทร AJAX

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม


มันเป็นนรกของสิ่งที่จะทำงาน ลองดูโค้ดจาก Carrington Build หรือ Advanced Custom Fields (ฉันคิดว่า ... ) เพียงเตรียมที่จะผิดหวัง
MikeNGarrett

คำตอบ:


7

ปัญหาหลักคือสคริปต์ที่ขาดหายไป สคริปต์ที่เข้าสู่ระบบ_WP_Editors::enqueue_scripts()จะไม่ถูกพิมพ์ _WP_Editors::editor_js()เช่นเดียวกับที่เป็นจริงสำหรับ

ดังนั้นคุณต้องทำอย่างนั้นในตัวจัดการการโทรกลับ AJAX ของคุณ ฉันได้เขียนปลั๊กอินสาธิตและวางไว้บน GitHub: T5 AJAX บรรณาธิการ

Ajax_Editorมีอยู่คนหนึ่งชื่อชั้นเป็น วิธีมันrender()พิมพ์บรรณาธิการในการร้องขอ AJAX

public function render()
{
    if ( ! $this->validator->is_valid( TRUE ) )
        die( 'nope' );

    wp_editor( $this->data->get(), $this->editor_id, $this->settings );
    \_WP_Editors::enqueue_scripts();
    print_footer_scripts();
    \_WP_Editors::editor_js();

    die();
}

การสั่งซื้อที่แน่นอนเป็นสิ่งสำคัญอย่าลืมdie()ที่ในตอนท้าย สิ่งที่ใช้ไม่ได้คือการอัปโหลดสื่อ ฉันได้รับข้อผิดพลาดของ JavaScript เมื่อฉันพยายามที่จะรวมที่

โปรดทราบว่าการโทรprint_footer_scripts();จะทำให้คุณได้มากกว่าที่คุณคาดไว้: ปลั๊กอินบางตัว (ตัวอย่างการตรวจสอบข้อความค้นหา) ลงทะเบียนสคริปต์แม้กระทั่งสำหรับคำขอ AJAX แม้ว่าจะไม่ต้องการใช้ก็ตาม


ขอบคุณมาก! คุณช่วยฉันจาก 2 วันพยายามทำงาน! สิ่งเดียวกับสิ่งนี้หากคุณต้องการรวมไว้ในประเภทโพสต์ที่กำหนดเองมันขัดแย้งกับบรรณาธิการอื่น ๆ :(
numediaweb

สำหรับทุกคนที่กำลังมองหาหลังจาก WP 4.8 คุณสามารถทำสิ่งนี้ได้ง่ายขึ้น (และหมดจด) ผ่าน JS API wp.editor.initialize: wordpress.stackexchange.com/a/274608/76440
majick

0

หลังจากดิ้นรนกับมันพบวิธีแก้ปัญหาหนึ่งบรรทัดที่ทำงานในการโทรกลับเพิ่ม:

tinymce.execCommand( 'mceAddEditor', true, element.id );

ไม่รู้เลยว่าทำไมฉันถึงหาเอกสารใน tinymce ไม่เจอ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.