Intereting Posts
Категория распаковки Wp не отображается как заголовок Синтаксис highligting для настраиваемых полей Страница WP и подкаталог с тем же именем Первичная публикация, не работающая с wp_redirect с ошибкой «невозможно изменить информацию заголовка» Как создать собственный шаблон для панели управления администратора Отображение признака на странице категории MySQL 5.6 вызывает ошибки с WP CLI Пользовательский виджет таксономии в области администрирования query_posts () vs get_posts () несколько циклов Foreach внутри shortcode не работает как запланировано Wp Debug Enabled True Уведомления и предупреждение Таможенный архив типа post с динамической фильтрацией таксономии – возможно ли это Как получить идентификатор пользователя профиля при загрузке изображения через медиа-загрузчик на странице профиля WordPress не создает «большие» миниатюры Данные Querystring обрезаются

Как напрямую вставить исходный код из IDE в сообщения?

Я попробовал preformatted кнопку, Paste as text кнопку или элемент вкладки « Text » перед вставкой исходного кода, WordPress всегда удалял вкладки отступа и форматировал форматирование кода.

Например, исходный код:

 final class HtmlAttr { /** * Constructor * * @param string $filter A filter hook to modify the attribute(s). */ function __construct(array $attrs, $filter = '') { // Something... } /** * Render attribute(s) */ function __toString() { // Something... } } 

станет:

 final class HtmlAttr { /** * Constructor * * @param string $filter A filter hook to modify the attribute(s). */ function __construct(array $attrs, $filter = '') { // Something... } /** * Render attribute(s) */ function __toString() { // Something... } } 

Я использую Atom IDE и не могу найти правильный способ вставить исходный код из IDE в WordPress TinyMCE Editor напрямую. Очень ценю вашу помощь!

Solutions Collecting From Web of "Как напрямую вставить исходный код из IDE в сообщения?"

Вы пробовали другой редактор?

Вы можете попробовать CKEeditor, по мнению некоторых, это не путается с отступом кода.

https://wordpress.org/plugins/ckeditor-for-wordpress/

После того, как я попытался добавить элемент pre вручную, я решил создать ярлык в редакторе TinyMCE:

Это класс кнопки и крючки в моей родительской теме:

 /** * EmbedSourceCodeButton * * @see https://codex.wordpress.org/TinyMCE_Custom_Buttons */ final class EmbedSourceCodeButton { /** * Name */ const NAME = 'embedSourceCodeButton'; /** * Constructor */ function init() { if ('post' !== $GLOBALS['current_screen']->post_type) return; add_action('mce_buttons', [$this, 'addButton']); add_action('mce_external_plugins', [$this, 'addPlugin']); add_action('admin_enqueue_scripts', [$this, 'localizeLabels'], 10, 0); } /** * Localize labels */ function localizeLabels() { wp_localize_script('jquery-core', self::NAME, [ 'title' => __('Embed Source Code', 'textdomain'), 'listboxLabel' => __('Language', 'textdomain'), 'textboxLabel' => __('Source code', 'textdomain') ]); } /** * Add this button to TinyMCE * * @see https://core.trac.wordpress.org/browser/tags/4.6/src/wp-includes/class-wp-editor.php#L624 * * @return array $buttons */ function addButton(array $buttons) { array_push($buttons, self::NAME); return $buttons; } /** * Add this plugin * * @see https://core.trac.wordpress.org/browser/tags/4.6/src/wp-includes/class-wp-editor.php#L392 * * @return array $plugins */ function addPlugin(array $plugins) { $x = SCRIPT_DEBUG ? '' : '.min'; if ( !isset($plugins[self::NAME]) ) $plugins[self::NAME] = get_template_directory_uri() . '/assets/js/button' . $x . '.js'; return $plugins; } } add_action('load-post.php', [new EmbedSourceCodeButton, 'init']); add_action('load-post-new.php', [new EmbedSourceCodeButton, 'init']); 

И это button.js который находится внутри папки asset/js моей темы:

 (function() { tinymce.PluginManager.add('embedSourceCodeButton', function(editor, url) { editor.addButton('embedSourceCodeButton', { text: false, icon: 'wp_code', onclick: function() { editor.windowManager.open({ title: embedSourceCodeButton.title, body: [ { // Unnecessary yet but may be helpful in the future. name: 'language', type: 'listbox', label: embedSourceCodeButton.listboxLabel, values: [ { text: 'PHP', value: 'php' }, { text: 'CSS', value: 'css' }, { text: 'HTML', value: 'html' }, { text: 'Javascript', value: 'javascript' } ] }, { name: 'code_block', type: 'textbox', multiline: true, label: embedSourceCodeButton.textboxLabel } ], onsubmit: function(e) { e.stopPropagation(); var entities = { '&': '&amp;', '<': '&lt;', ">": '&gt;', '"': '&quot;', "'": '&#39;', '/': '&#x2F;' }; // Encode HTML special chars before inserting into editor. var codeBlock = e.data.code_block.replace(/&|<|>|"|'|\//gm, function(s) { return entities[s]; }); editor.insertContent('<pre data-lang="' + e.data.language + '"><code>' + codeBlock + '</code></pre>'); } }); } }); }); })(); 

Надеюсь, это поможет кому-то, кто ленится, как и я. 😉