Добавить функцию jQuery на страницы администратора

Мне нужно добавить немного готового документа jQuery для публикации / редактирования страниц в admin. Я взламываю старый плагин, который добавляет текстовое поле на страницу редактора и обрабатывает вставку этого текста в файл шаблона, но ввод текста – только html; эта готовая функция добавляет класс mceEditor в текстовое поле. Эта функция работает, когда я вручную включаю ее в admin-header.php, но я не могу этого сделать, конечно.

Я не думаю, что мне нужно поставить его в очередь, так как это не библиотека. Или я? И, если применимо: каковы плюсы и минусы разных способов его добавления?

Итак, как я могу подключить это или иным образом загрузить его в редакторы post / page в admin? Он должен войти в файл плагина, а не в функцию functions.php в теме.

<script type="text/javascript"> jQuery(document).ready( function () { jQuery("#dt-additional-info").addClass("mceEditor"); if ( typeof( tinyMCE ) == "object" && typeof( tinyMCE.execCommand ) == "function" ) { jQuery("#dt-additional-info").wrap( "<div id='editorcontainer'></div>" ); tinyMCE.execCommand("mceAddControl", false, "dt-additional-info"); } }); </script> 

Solutions Collecting From Web of "Добавить функцию jQuery на страницы администратора"

Я был бы склонен просто сделать одно за другим и сделать с ним.

Это означает, что вам нужно управлять дополнительным файлом (JS-файл), но когда вы пишете код, обычно полезно создать какую-то организацию с вашими файлами (или, по крайней мере, привыкнуть к этому), т.е. , javascript / jquery в одной папке, css – другой, сохраняя PHP и HTML в ваших основных файлах PHP-плагина.

Поэтому мое предложение было бы переместить jQuery в js-файл, а затем запустить параметр enqueue jQuery в качестве зависимости, но не нужно регистрировать его для одного выключения.

Довольно много вариантов в отношении крючков, но я бы лично пошел ..

 function yournamespace_enqueue_scripts( $hook ) { if( !in_array( $hook, array( 'post.php', 'post-new.php' ) ) ) return; wp_enqueue_script( 'your_script_handle', // Handle plugins_url( '/yourfilename.js', __FILE__ ), // Path to file array( 'jquery' ) // Dependancies ); } add_action( 'admin_enqueue_scripts', 'yournamespace_enqueue_scripts', 2000 ); 

Просто отрегулируйте страницы, для которых требуется очередь в очереди – в вызове in_array in_array() .

Некоторое время назад мне нужно было что-то вроде этого, вот что я использовал:

 function admin_js() { ?> <script type="text/javascript"> jQuery(document).ready( function () { jQuery("#dt-additional-info").addClass("mceEditor"); if ( typeof( tinyMCE ) == "object" && typeof( tinyMCE.execCommand ) == "function" ) { jQuery("#dt-additional-info").wrap( "<div id='editorcontainer'></div>" ); tinyMCE.execCommand("mceAddControl", false, "dt-additional-info"); } }); </script> <?php } add_action('admin_head', 'admin_js'); 

В то время я просто подключил его к действию admin_head , теперь я знаю, что есть много действий . Возможно, в этом случае было бы лучше подключить его к действию admin_print_scripts :

 add_action('admin_print_scripts', 'admin_js'); 

Примечание. Это напечатает сценарий на странице, если вы хотите сохранить его во внешнем файле, вам придется его поставить в очередь:

 function admin_js() { wp_register_script('admin_js', plugins_url( .'/yourplugin/admin-js.js' . ), array('jquery')); wp_enqueue_script('admin_js'); } add_action('admin_enqueue_scripts', 'admin_js'); 

И в вашем файле admin-js.js javascript:

  jQuery(document).ready( function () { jQuery("#dt-additional-info").addClass("mceEditor"); if ( typeof( tinyMCE ) == "object" && typeof( tinyMCE.execCommand ) == "function" ) { jQuery("#dt-additional-info").wrap( "<div id='editorcontainer'></div>" ); tinyMCE.execCommand("mceAddControl", false, "dt-additional-info"); } }); 

Я использую оба этих метода на страницах параметров, и оба они работают без проблем.