Intereting Posts
Как использовать next_post_link и previous_post_link в отдельных сообщениях в результатах поиска Заменить WordPress% postname% суффикса% postid%? Поля повторителя API-интерфейса Определите, какой цикл вы подключаете; первичный или вторичный? Как создать настраиваемую структуру URL для настраиваемого типа сообщений? Помощь с разбивкой по страницам CPT добавьте поле ввода файла в настраиваемый тип сообщения и как его использовать в шаблоне cutom ERR_CONTENT_DECODING_FAILED: Как полностью удалить плагины сжатия gzip? Можете ли вы запускать wordpress с несколькими доменами одновременно (не многосетевыми)? Авто вставить пользовательский тип заголовка сообщения Ошибка 404 WordPress Повторение класса CSS в зависимости от категории сообщения в списке Удаление определенного типа сообщений из всех RSS-каналов Разрешить подписчику быть автором и просматривать только его сообщение Перенаправить страницу на страницу по умолчанию

Вставить wp_editor на интерфейс с AJAX?

Я пытаюсь вставить wp_editor() в страницу на front-end с AJAX. Код, который у меня есть сейчас, вставляет элементы wp_editor и необходимые файлы JavaScript и CSS, но ни один из параметров, которые я использовал вначале в wp_editor() не используется при создании этого элемента TinyMCE.

Как передать $settings установленные в PHP, в динамически созданный экземпляр TinyMCE?

Я нашел старый вопрос, который, кажется, отвечает на мой вопрос, но я не понимаю, как это работает, и код дает исправленную ошибку PHP.

Загрузите tinyMCE / wp_editor () через AJAX


PHP

 function insert_wp_editor_callback() { // Empty variable $html = ''; // Define the editor settings $content = ''; $editor_id = 'frontend_wp_editor'; $settings = array( 'media_buttons' => false, 'textarea_rows' => 1, 'quicktags' => false, 'tinymce' => array( 'toolbar1' => 'bold,italic,undo,redo', 'statusbar' => false, 'resize' => 'both', 'paste_as_text' => true ) ); // Hack to put wp_editor inside variable ob_start(); wp_editor($content, $editor_id, $settings); $html .= ob_get_contents(); ob_end_clean(); // Get the necessary scripts to launch tinymce $baseurl = includes_url( 'js/tinymce' ); $cssurl = includes_url('css/'); global $tinymce_version, $concatenate_scripts, $compress_scripts; $version = 'ver=' . $tinymce_version; $css = $cssurl . 'editor.css'; $compressed = $compress_scripts && $concatenate_scripts && isset($_SERVER['HTTP_ACCEPT_ENCODING']) && false !== stripos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'); if ( $compressed ) { $html .= "<script type='text/javascript' src='{$baseurl}/wp-tinymce.php?c=1&amp;$version'></script>\n"; } else { $html .= "<script type='text/javascript' src='{$baseurl}/tinymce.min.js?$version'></script>\n"; $html .= "<script type='text/javascript' src='{$baseurl}/plugins/compat3x/plugin.min.js?$version'></script>\n"; } add_action( 'wp_print_footer_scripts', array( '_WP_Editors', 'editor_js' ), 50 ); add_action( 'wp_print_footer_scripts', array( '_WP_Editors', 'enqueue_scripts' ), 1 ); wp_register_style('tinymce_css', $css); wp_enqueue_style('tinymce_css'); // Send data wp_send_json_success($html); wp_die(); } add_action( 'wp_ajax_insert_wp_editor_callback', 'insert_wp_editor_callback' ); add_action( 'wp_ajax_nopriv_insert_wp_editor_callback', 'insert_wp_editor_callback' ); 

JavaScript

 $('#insert_wp_editor').on('click', function() { // Data to send to function var data = { 'action': 'insert_wp_editor_callback' }; $.ajax({ url: ajaxURL, type: 'POST', data: data, success: function(response) { if ( response.success === true ) { // Replace element with editor $('#editor-placeholder').replaceWith(response.data); // Init TinyMCE tinymce.init({ selector: '#frontend_wp_editor' }); } } }); }); 

Solutions Collecting From Web of "Вставить wp_editor на интерфейс с AJAX?"

Итак, после некоторого дополнительного копания, я ответил на свой вопрос, «говоря о точках», так сказать. В StackOverflow и StackExchange есть много кусочков информации по этой теме, но никто из них не ответил на мой вопрос.

Итак, вот полный рабочий код для загрузки экземпляра wp_editor с AJAX на front-end, включая настройки, предоставляемые wp_editor .

Я думаю, что может быть даже лучшее решение, так как прямо сейчас мне нужно вызвать wp_print_footer_scripts() , что может добавить некоторые неуважительные вещи, но не (в моем случае).


PHP

 function insert_wp_editor_callback() { $html = ''; // Define the editor settings $content = ''; $editor_id = 'frontend_wp_editor'; $settings = array( 'media_buttons' => false, 'textarea_rows' => 1, 'quicktags' => false, 'tinymce' => array( 'toolbar1' => 'bold,italic,undo,redo', 'statusbar' => false, 'resize' => 'both', 'paste_as_text' => true ) ); // Grab content to put inside a variable ob_start(); // Create the editor wp_editor($content, $editor_id, $settings); // IMPORTANT // Adding the required scripts, styles, and wp_editor configuration _WP_Editors::enqueue_scripts(); _WP_Editors::editor_js(); print_footer_scripts(); $html .= ob_get_contents(); ob_end_clean(); // Send everything to JavaScript function wp_send_json_success($html); wp_die(); } add_action( 'wp_ajax_insert_wp_editor_callback', 'insert_wp_editor_callback' ); add_action( 'wp_ajax_nopriv_insert_wp_editor_callback', 'insert_wp_editor_callback' );