AJAXを介してwp_editorをロードする方法


17

WordPressのAJAX経由でwp_editorをロードする方法を知っている人はいますか?

私のマークアップとエディターは正しく読み込まれていますが、エディターコントロールが正しく読み込まれていません。JavascriptがAJAX呼び出しで実行されていない可能性があります。

任意の助けをいただければ幸いです。


仕事をするのは大変なことです。Carrington BuildまたはAdvanced Custom Fieldsのコードの一部を確認してください(そう思います...)。ただイライラする準備をしてください。
MikeNGarrett 14年

回答:


7

主な問題は、欠落しているスクリプトです。キューに入れられたスクリプト_WP_Editors::enqueue_scripts()は決して印刷されません。同じことはにも当てはまります_WP_Editors::editor_js()

そのため、AJAXコールバックハンドラーでそれを行う必要があります。デモプラグインを作成し、GitHubに配置しました:T5 AJAX Editor

という名前のクラスが1つあり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 14年

WP 4.8以降では、JS APIを使用してこれをより簡単に(かつきれいに)行うことができますwp.editor.initializewordpress.stackexchange.com/a/274608/76440
majick

0

それに苦労した後、動作する1行のソリューションを見つけました、コールバックに追加:

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

tinymce内でドキュメントを見つけることができなかった理由はわかりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.