Intereting Posts
Проблема обновления для обновления полей пользователя В чем разница между крючками, фильтрами и действиями? Как проверить, существует ли файл шаблона WordPress? Перенаправление проблемы: база данных WordPress Wp_List_Table не реагирует Обновление пользовательского мета get $ post (объект, части / значения) в мета-поле Использовать API Transient для кэширования запросов для всех сообщений во всех категориях? Заменить текст внутри огромного многомерного массива Возможность ротации удалять несколько сообщений типа post не работает Невозможно установить или обновить что-либо в wordpress на localhost Получить пользователей из всего / определенного блога пользователя user_role и current_user подсчет сообщения из wp-запроса с использованием sticky_post Как добавить пользовательский JS в tinymce в wordpress Мой сайт wordpress загружает страницу index.php вместо панели мониторинга

Показать диалоговое окно в плагине 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> 

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