Intereting Posts
Базовые множественные циклы отображают только первый цикл Пользовательские стили не работают при копировании в тему style.css Как перенаправить пользователей без входа для входа в систему с помощью post_password_required () Функции, когда woocommerce не установлена query_posts -> с использованием meta_compare / где мета значение меньше или больше или равно Можно ли определить, является ли действие POST для «Сохранить сообщение» перед действием save_post? Пункт меню скрыт за другими Как исправить разбиение на страницы после переписывания URL? то есть. www.site.com/players/type/pro/page/3/ Добавить тег сообщения без сообщения id Импортировать WordPress, не удалось импортировать размеры Добавление вторых комментариев.php для отзывов Переключатель языка WordPress не работает Как изменить название шрифта полного капитала моего блога WordPress? 404 не найдена ошибка на локальном хосте WordPress Настроить страницу формы регистра с помощью add_action или apply_filter

Показать диалоговое окно в плагине TinyMCE и использовать в нем функции WordPress php

Я добавляю кнопку TinyMCE в свой плагин. До сих пор мне удалось добавить кнопку и вызвать файл editor_plugin.js, и это команда. Нелегкая миссия …

Я хочу, чтобы эта кнопка отображала диалоговое окно, которое дает пользователю несколько опций. Это раскрывающиеся окна, которые мне нужно заполнить, и некоторые текстовые поля для пользователя, чтобы просто написать ввод. Некоторые из них нуждаются в информации из функций WordPress, а другие – только статическая информация.

После того, как это диалоговое окно будет принято, я хочу, чтобы он написал короткий код в сообщении для моего плагина для отображения с параметрами, выбранными в поле.

Дело в том, что я хочу использовать некоторые из функций WordPress в моем php-файле. Но это своего рода «вне контекста». Я не могу использовать функции WordPress или даже функции __() для i18n.

Вот код, который я использую из одного из примеров TinyMCE:

 ed.addCommand('mceExample', function() { ed.windowManager.open({ file : url + '/box.php', width : 500 + ed.getLang('example.delta_width', 0), height : 300 + ed.getLang('example.delta_height', 0), inline : 1 }, { plugin_url : url, // Plugin absolute URL some_custom_arg : 'custom arg' // Custom argument }); }); 

Я также пропускаю способ писать на почту. Как вы можете видеть здесь, этот код не использует ничего для записи в сообщение. Я попытался использовать этот код, который я нашел в другом примере: ed.execCommand('mceInsertContent', false, 'Hello World'); но не выяснили, как использовать его в моем новом скрипте.

Извините, если раньше был дан ответ, но вся документация, касающаяся швов TinyMCE, довольно запутанна, и мне было трудно интегрировать это в мои плагины. Заранее спасибо.

Solutions Collecting From Web of "Показать диалоговое окно в плагине TinyMCE и использовать в нем функции WordPress php"

Вместо того, чтобы требовать admin.php, вы просто можете использовать WP встроенную функцию ajax, даже если это не ajax в этом случае.

Добавить крючок

  add_action('wp_ajax_my_plugin_function', 'my_plugin_function_callback'); 

Создайте свою функцию вывода (обратный вызов)

 function my_plugin_function_callback() { // do stuff } 

Назовите это так

вместо:

 file : url + '/box.php', 

вы должны иметь возможность использовать глобальный ajaxurl:

 file: ajaxurl + '?action=my_plugin_function&optional=data ... 

Возможно, добавьте nonce по соображениям безопасности, но это зависит от вас 🙂

[править: пропущенная часть вопроса]

Не могу поклясться, что это лучшая практика, но решение, которое я видел, это включить «wp-admin / admin.php», который должен предоставить вам доступ к любым / всем функциям WordPress.

Попасть в это – проблема, учитывая, что ваш плагин можно переименовать / переместить. Это [хакерское] решение предполагает, что плагин все еще находится в каталоге «wp-content». Вы захотите разместить этот код в верхней части вашего файла box.php.

 $admin = dirname( __FILE__ ) ; $admin = substr( $admin , 0 , strpos( $admin , "wp-content" ) ) ; require_once( $admin . 'wp-admin/admin.php' ) ; 

Если есть лучший способ сделать это, я бы тоже хотел увидеть это – это кажется халатным.

Что касается размещения вашего содержимого в редакторе, вам нужно будет добавить файл «tiny_mce_popup.js» в ваш диалог. Поместите это в начало файла box.php.

 <script type="text/javascript" src="<?php echo get_option( 'siteurl' ) ?>/wp-includes/js/tinymce/tiny_mce_popup.js"></script> 

В диалоговом окне должен быть какой-то метод javascript, который запускается, когда пользователь нажимает OK. В этом методе вы будете использовать execCommand, например:

 <script type="text/javascript"> function myOnSubmitFunction( ){ tinyMCEPopup.editor.execCommand('mceInsertContent', false, 'Put your content here...' ) ; } </script> 

Надеюсь, я сделал это немного более ясно.