Есть ли способ иметь несколько редакторов WYSIWYG для пользовательского типа сообщений? Например, если бы у меня был макет с двумя столбцами, я хотел бы иметь один редактор для одного столбца и другой редактор для другого.
Share
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Какая конфигурация WYSIWYG вам нужна? Полная панель вкл. загрузка изображений, полноэкранный режим и т. д.?
Связанный вопрос: wordpress.stackexchange.com/questions/53/…
У Bueltge есть хорошая статья, в которой показано, как это можно сделать: wpengineer.com/1991/example-how-to-add-meta-boxes-to-edit-area.
Мне нужен именно этот вопрос для клиентского проекта. Спасибо за вопрос!
MikeSchinkel — я новичок в WordPress; куда мне поместить код, который вы разместили?
«Мета_бокс»? Потрясающий! Я думал, что я единственный. Собираюсь дать вам решение попробовать через некоторое время.
Решение Thomas McDonalds не работает для меня в 3.1 — есть ли способ сделать это в 3.1?
Майк, тебе не хватает равенства после,
$script
а также нет закрытия для твоего документа, т.е.EOT;
. Помимо небольших ошибок, это хороший рабочий пример.. 😉@ t31os — Спасибо, что сообщили мне. Не уверен, как я пропустил их; Обычно я тестирую, а затем копирую ответы из своего рабочего кода. Иди разберись!
использование этого решения привело к тому, что обычный визуальный редактор также был установлен SimpleLayout для меня в 3.1.
@mfields — Облом, что 3.1 сломал так много вещей. 🙁
Хотел обратить ваше внимание на эту статью, так как она может прояснить некоторые вещи: dannyvankooten.com/450/…
Ответы должны быть больше, чем простые ссылки. На самом деле они должны быть ответом, а не маршрутом, где кто-то может найти ответ. Пожалуйста, помогите предотвратить гниение ссылок, отредактируйте свой ответ и предоставьте необходимую информацию, которая поможет ОП, а также последующим посетителям решить их проблему.
Скажем, ваш пользовательский тип записи называется
Properties
, вы должны добавить поле для своего дополнительного редактора tinyMCE, используя код, подобный этому:wysiwyg-editor-2
это идентификатор, который будет применен к метабоксу,Second Column
это заголовок, который будет иметь метабокс,second_column_box
это функция, которая распечатает HTML для метабокса,properties
это наш пользовательский тип записи,normal
это расположение метабокса иhigh
указывает, что он должен отображаться как можно выше на странице. (Обычно ниже стандартного редактора tinyMCE).Затем, взяв это за самый простой пример, вы должны прикрепить редактор tinyMCE к текстовой области. Нам все еще нужно определить нашу
second_column_box
функцию, которая будет печатать HTML для мета-поля, так что это самое подходящее место для этого:Есть пара проблем, которые я не уверен, как преодолеть. Редактор tinyMCE будет вложен в метабокс, что может быть не идеально, и в нем не будет возможности переключения между режимами HTML и визуального редактирования, а также команд вставки мультимедиа, которые есть в обычном редакторе сообщений. Переключение режимов, по-видимому, определяется как функция, первым аргументом которой является идентификатор, но, тем не менее, он также закодирован в скрипте wp-tinymce. Для этого можно использовать встроенные функции tinyMCE, но это меняет текстовое поле между полным tinyMCE и базовым текстовым полем без каких-либо кнопок вставки WP HTML.
Во- первых: большое спасибо @Thomas McDonald за его ответ ; Мне нужно было выяснить точно такой же вопрос, который задал @Paul Sheldrake, и код Томаса заставил меня начать в правильном направлении.
К сожалению, затем я застрял, потому что мне нужно было изменить макет со стандартного на более простой и меньший, поскольку мне нужно было использовать TinyMCE в боковом метабоксе. Я искал решение практически везде, особенно на MoxieCode TinyMCE Wiki и TinyMCE Tips & How To Forum, и ничего не нашел! 1 Все, что я нашел, объясняло, как установить
theme
,width
,height
и т. д. с помощью,tinyMCE.init({...})
но, по-видимому, вы не можете использовать это, когда используетеtinyMCE.execCommand("mceAddControl")
.Я был в тупике, когда наткнулся на статью Гамильтона Чуа о нескольких экземплярах TinyMCE 3 на одной странице, и он прибил ее! Его решение состояло в том, чтобы присвоить перед вызовом, например:
tinyMCE.settings
tinyMCE.execCommand("mceAddControl")
Печально то, что это было действительно несложно, но нигде больше я не смог найти это задокументировано. Удивительно обнаружить, что почти никто не сталкивался с этой проблемой.
В любом случае приведенный выше код сгенерировал следующий второй TinyMCE именно в том формате/макете, который нужен моему клиенту:
(источник: mikeschinkel.com )
Поэтому, если вы используете приведенный выше код @Thomas McDonald, вы обнаружите, что вам нужно изменить макет, обязательно ознакомьтесь с замечательной статьей Гамильтона Чуа (спасибо, Хэм!) :
PS Если вы сделаете что-то даже немного не так, TinyMCE может вообще не отображаться. Например, в моем случае я
theme: "simple"
сначала использовал, но ничего не получил, и мне потребовалось больше часа, чтобы понять, что мне просто нужно использоватьtheme: "advanced"
. Поэтому, если вы обнаружите, что TinyMCE не работает, обязательно попробуйте что-то изменить, возможно, у вас возникла аналогичная проблема. (Кстати, я не пробовал другие темы и не исследовал, что еще доступно; если вы найдете другие темы, которые работают, оставьте комментарий ниже.)Сноска
1 : Очень расстраивает! После чуть более месяца с WordPress Answer я теперь ожидаю найти ответы на все свои вопросы такого же уровня качества, как здесь, и в других местах я обычно нахожу разочарование!
Поскольку я нашел эту статью в качестве первого результата в Google, я просто хотел прокомментировать, что WP теперь предлагает функцию для решения такого рода задач.
Внутри
add_meta_box
функции добавьте следующий код —>Везде, где вы хотите добавить редактор TinyMCE
Ссылка:
wp_editor
Редактор по умолчанию, tinymce, загружается функцией в wp-admin/includes/post.php, которая называется wp_tiny_mce(); Посмотрите в исходнике строку 1350. В строке 1478 есть набор настроек. Один из вариантов, по-видимому, определяет селектор текстовой области, к которому применяется редактор javascript. Я читал этот пост Кейла в его блоге, который указал мне на это. Прочитайте статью, и, возможно, есть способ вызвать wp_tiny_mce() в плагине раздела администратора и применить его ко второй текстовой области, которую вы создаете.
Я получил это, просто добавив «редактор» в качестве атрибута класса в текстовую область: