Intereting Posts
Как я могу захватить определенные должности (по почте id) и отображать заголовок, изображение и выдержку? Экземпляр, не вставляющий данные для виджета Как повторно использовать шаблоны php в качестве коротких кодов? Как создать пользовательскую домашнюю страницу через плагин? Где шаблон для стандартного формата сообщения в теме двадцать четвертая? Шаблон страницы для блога не работает Как передать числовой идентификатор шаблону страницы? Как удалить параметры тега и категории по умолчанию из пользовательского меню администратора типа сообщения Проблема с пользовательской функцией из jQuery slider tutorial дополнительный тег <a> добавлен в wp_nav_menu Как отображается этот контент? Какой метод проверки подлинности WP-API следует использовать для взаимодействия с анонимными / незарегистрированными посетителями? Почему switch_to_blog перестает работать? Защита паролем или IP для доступа в процессе разработки. Сайт WordPress иначе показал страницу-заполнитель wp_remote_get vs. file_get_contents против cURL?

Включение / добавление специальных сочетаний клавиш для работы с редактором HTML WordPress

Я использую Markdown в своих сообщениях, а плагин, который я использую для этой цели, требует, чтобы редактор Visual был отключен.

Редактор HTML в значительной степени представляет собой текстовое поле. Чтобы упростить запись, я хотел бы включить некоторые пользовательские сочетания клавиш, которые позволяют мне форматировать текст при уценке при нажатии комбинации клавиш (например, Ctrl + B ). Как мне это сделать?

В основном, я просто хочу, чтобы некоторые быстрые клавиши, которые работают в редакторе сообщений WordPress.StackExchange.com. И они…

  • Ctrl + B → ** Полужирный текст **

  • Ctrl + I → _Italic Text_

  • Ctrl + Q →> Block Quote

    • Вышеупомянутое должно работать, даже если имеется несколько строк цитируемого текста)
  • Ctrl + K

    • wrap inline-text с `

    • отступ каждой строки на четыре пробела, если имеется несколько строк

PS: Я не знаю JavaScript или PHP, поэтому, пожалуйста, постарайтесь быть максимально ясными. Благодарю.

Панель инструментов / редактор, используемый на веб-сайтах Stack Exchange (и в моем плагине WP-MarkDown ), – это PageDown .

Это связано с тремя файлами JavaScript:

  • Тот, который обрабатывает преобразование MarkDown для HTML
  • Тот, который обрабатывает санитацию
  • Тот, который обрабатывает редактор (панель инструментов и предварительный просмотр)

К последним относятся сочетания клавиш MarkDown, которые вы упомянули.

Следующее не было проверено, а просто предназначено для того, чтобы дать описание того, что вам нужно сделать.

Шаг 1: Регистрация и ввод в действие JavaScript и стилей

Чтобы заставить это работать в редакторе WordPress, сначала зарегистрируйте и запишите вышеприведенные сценарии (укажите правильное местоположение в своем подключаемом модуле). (Я не уверен, что вам нужно регистрировать скрипты, когда у них есть зависимости до их очереди)

Поскольку это только для администратора, мы используем admin_enqueue_scripts . Вы также захотите проверить

  • Мы находимся на правильной странице администратора
  • Тип сообщения (в случае, если MarkDown включен только для определенного типа сообщения)

Кроме того, функция привязывается к нижнему колонтитулу администратора. Это напечатает JavaScript в нижнем колонтитуле. (Вы можете поместить его в отдельный файл, зарегистрировать его и вставить в него здесь, но его нужно загрузить после того, как скрипт загрузится на панель инструментов WordPress стандартной загрузки). Следовательно, номер приоритета: 100.

 add_action('admin_enqueue_scripts', 'wpse49449_admin_scripts',10,1); function wpse49449_admin_scripts($hook){ $screen = get_current_screen(); $post_type = $screen->post_type; //Enqueue only on page needed and only for the relevant post type if ( ('post-new.php' == $hook || 'post.php' == $hook) && $post_type == 'post' ){ $plugin_dir = plugin_dir_url(__FILE__); wp_register_script('my_md_convert', $plugin_dir. 'js/pagedown/Markdown.Converter.js',array(),'1.1' ); wp_register_script('my_md_sanit', $plugin_dir.'js/pagedown/Markdown.Sanitizer.js',array(),'1.1' ); wp_register_script('my_md_edit',$plugin_dir. 'js/pagedown/Markdown.Editor.js',array('my_md_convert','my_md_sanit'),'1.1' ); wp_enqueue_script('my_md_edit'); wp_enqueue_script('jquery'); wp_enqueue_style('my_md_style',$plugin_dir.'css/demo.css'); add_action( 'admin_print_footer_scripts', 'wpse49449_admin_footers_script',100 ); } } 

Шаг 2. Отключите редактор TinyMCE, где это необходимо.

TinyMCE необходимо отключить. Но отключите его только для типов сообщений, где вы используете редактор MarkDown. Чтобы отключить редактор TinyMCE:

 add_filter( 'user_can_richedit', 'wpse49449_disable_tinymce_editor'), 99 ); function wpse49449_disable_tinymce_editor(){ //Get post type $screen = get_current_screen(); $post_type = $screen->post_type; //Disable depending on post type //Return 'false' to disable TinyMCE, 'true' otherwise. return false; } 

Шаг 3. Замените панель инструментов «стандартный» на панель инструментов MarkDown

Как отмечено выше, функция wpse49449_admin_footers_script выводит некоторый JavaScript в нижнем колонтитуле. Это

  • добавляет окно предварительного просмотра после текстового редактора, #wp-content-editor-container
  • заменяет панель инструментов #ed_toolbar по умолчанию панель инструментов #ed_toolbar .
  • инициализирует конвертер MarkDown-> HTML
  • инициализирует редактор MarkDown

Функция:

  function wpse49449_admin_footers_script(){ ?> <script> jQuery(document).ready(function($) { $('#wp-content-editor-container').after("<div id='wmd-previewcontent' class='wmd-panel wmd-preview prettyprint'></div>"); $('#ed_toolbar').html("<div id='wmd-button-barcontent'></div>"); var converter = new Markdown.getSanitizingConverter(); var editor = new Markdown.Editor(converter, 'content'); editor.run(); }); </script> <?php } 

Это должно заставить вас начать :).

Шаг 4: «Обходное решение Editor.js»

Файл JavaScript Markdown.Editor.js предполагает, что идентификатор текстовой области будет "wmd-input" + postfix где postfix – это переменная, заданная как «контент» в этой строке на шаге 3:

 var editor = new Markdown.Editor(converter, 'content'); 

Проблема в том, что идентификатор текстового wmd-input не является content не wmd-input . Мы не хотим изменять идентификатор текстового поля, поэтому вместо него мы можем изменить функцию, ответственную за указание редактору MarkDown идентификаторов панели инструментов, области предварительного просмотра и текста (по моей строке 249). Мы меняем это:

 function PanelCollection(postfix) { this.buttonBar = doc.getElementById("wmd-button-bar" + postfix); this.preview = doc.getElementById("wmd-preview" + postfix); this.input = doc.getElementById("wmd-input" + postfix); }; 

к этому:

 function PanelCollection(postfix) { this.buttonBar = doc.getElementById("wmd-button-bar" + postfix); this.preview = doc.getElementById("wmd-preview" + postfix); this.input = doc.getElementById(postfix); }; 

Я не уверен, как получить ctrl + b и другие комбинации кнопок, но вот список ярлыков для секции HTML:

  • Полужирный: Alt + SHIFT + b
  • Курсив: Alt + SHIFT + i
  • Blockquote: Alt + SHIFT + q
  • Зачеркнутый текст: Alt + SHIFT + d
  • Код: Alt + SHIFT + c
  • Ссылка: Alt + SHIFT + a
  • Unordered List (ul): Alt + SHIFT + u
  • Упорядоченный список (ol): Alt + SHIFT + o
  • Вставить дату / время: Alt + SHIFT + s
  • Вставить URL-адрес IMG: ALT-SHIFT-m
  • Разрыв строки: SHIFT + Enter
  • Элемент списка (li): Alt + SHIFT + l
  • Отменить: CTRL + z
  • Повторить: CTRL + y
  • Подробнее: Alt + SHIFT + t
  • Опубликовать сообщение: Alt + SHIFT + p