AJAX를 통해 wp_editor를로드하는 방법


17

누구든지 WordPress에서 AJAX를 통해 wp_editor를로드하는 방법을 알고 있습니까?

마크 업과 편집기가 제대로로드되었지만 편집기 컨트롤이 제대로로드되지 않습니다. AJAX 호출에서 Javascript가 실행되고 있지 않기 때문일 수 있습니다.

도움을 주시면 감사하겠습니다.


일을하는 것은 지옥입니다. Carrington Build 또는 Advanced Custom Fields의 코드 중 일부를 확인하십시오 (제 생각에는 ...). 좌절 할 준비를하십시오.
MikeNGarrett

답변:


7

주요 문제는 누락 된 스크립트입니다. 대기열에 포함 된 스크립트 _WP_Editors::enqueue_scripts()는 인쇄되지 않습니다. 의 경우도 마찬가지입니다 _WP_Editors::editor_js().

따라서 AJAX 콜백 핸들러에서이를 수행해야합니다. 데모 플러그인을 작성하여 GitHub : T5 AJAX Editor 에 넣었습니다 .

라는 클래스가 하나 있습니다 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 요청에 대해 필요하지 않더라도 스크립트를 등록합니다.


정말 고마워! 당신은 일을하려고 이틀에서 저를 구했습니다! 이것으로 유일하게, 사용자 정의 게시물 유형에 포함하려면 다른 편집기와 충돌합니다. (
numediaweb

찾고있는 누군가를 위해, WP 4.8 후에는 JS API를 통해보다 쉽게 (깨끗하게)이 작업을 수행 할 수 있습니다 wp.editor.initialize: wordpress.stackexchange.com/a/274608/76440
majick

0

그것에 어려움을 겪고 나서 콜백 add에서 작동하는 한 줄 솔루션을 찾았습니다.

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

tinymce에서 문서를 찾을 수없는 이유를 모르겠습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.