web-dev-qa-db-ja.com

経由でwp_editorを読み込む方法 AJAX

WordPressでAJAXを介してwp_editorを読み込む方法を知っている人はいますか?

私のマークアップとエディタは正しくロードされていますが、エディタコントロールが正しくロードされていません。それは、JavascriptがAJAX呼び出しで実行されていないためと考えられます。

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

17
user17108

主な問題は、不足しているスクリプトです。 _WP_Editors::enqueue_scripts()にエンキューされたスクリプトは印刷されません。 _WP_Editors::editor_js()についても同じことが言えます。

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

Ajax_Editorという名前のクラスが1つあります。そのメソッド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();を呼ぶことはあなたが予想以上にあなたを与えることに注意してください:いくつかのプラグイン(例えばQuery Monitor)はたとえそれらがそれらを必要としないとしても_ ​​AJAXリクエストに対してさえ彼らのスクリプトを登録します。

6
fuxia

それと苦労した後、コールバックaddでうまくいく一行の解決策を見つけました:

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

私がTinymceの中にドキュメンテーションを見つけることができなかった理由はわかりません。

0