如何通过AJAX加载wp_editor


17

有谁知道如何通过WordPress中的AJAX加载wp_editor?

我的标记和编辑器已正确加载,但编辑器控件未正确加载,这可能是因为Javascript未在AJAX调用中运行。

任何帮助,将不胜感激。


开始工作真是一件令人头疼的事。从Carrington Build或Advanced Custom Fields(我认为...)中检查一些代码。只是准备要沮丧。
MikeNGarrett 2014年

Answers:


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();将给您带来超出预期的效果:某些插件(例如Query Monitor)即使对于AJAX请求也注册其脚本,即使它们在那里不需要它们。


非常感谢!您从2天的工作中救了我!唯一的问题是,如果您想将其包括在自定义帖子类型中,则它会与其他编辑器发生冲突:(
numediaweb 2014年

对于任何希望看的人,在WP 4.8之后,您都可以通过JS API轻松(干净地)完成此操作wp.editor.initializewordpress.stackexchange.com/a/274608/76440
majick

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.