Мне нужно создать собственный мета-блок (-ы) для моего типа поста «Слайд-шоу» (этот тип поста уже создан). Каждый метабокс будет содержать содержимое каждого слайда слайда и сохранять его в соответствующих настраиваемых полях. Каждый метабокс должен содержать следующие поля:
- Заголовок (текстовое поле)
- Изображение (Либо текстовое поле для URL-адреса img, либо, в идеале, раскрывающийся список, показывающий миниатюры изображений, прикрепленных к сообщению)
- Код для вставки (текстовая область)
- Описание (wysiwyg)
- Скрыть слайд (флажок, используемый для временного скрытия слайда без его удаления)
- Удалить слайд (кнопка, которая удаляет содержимое мета полей публикации, которые были заполнены этим слайдом)
Я также хотел бы, чтобы где-то была кнопка, которая позволяет мне «Добавить слайд», поэтому при нажатии на него добавляется еще один «Пользовательский» мета-бокс «Слайд», который является дубликатом первого, но добавляет добавочное число к каждому пользовательскому мета-полю поста. В настоящее время у меня есть только 15 метабоксов, и шаблон слайд-шоу настроен таким образом, что если заполнены только 5 метабоксов, отображаются только 5 слайдов.
Наконец, я хотел бы иметь возможность переупорядочивать слайды с помощью «Перетаскивания» или другого текстового поля, в которое я могу ввести номер заказа.
Я получил его почти там, где он мне нужен, с помощью плагина «Больше полей» и некоторой справки по коду от Rarst. С плагином «Больше полей» у меня есть следующие поля в каждом метабоксе:
- Заголовок (текстовое поле)
- Изображение (выпадающий список изображений, прикрепленных к сообщению)
- Код для вставки (текстовая область)
- Описание (wysiwyg)
- Скрыть слайд (флажок, используемый для временного скрытия слайда без его удаления)
Вот скриншот того, как я его настраивал через плагин «Больше полей»:
Проблема в том, что невозможно удалить слайд после его создания, потому что «Больше полей» нигде не используется <?php delete_post_meta($post_id, $key, $value); ?>
. Другая проблема с плагином заключается в том, что он слишком ненадежен и часто ломается с обновлениями.
Мне удалось реализовать подобное решение с моими собственными настраиваемыми метабоксами, которые включают в себя:
- Заголовок (текстовое поле)
- Изображение (текстовое поле для URL img)
- Код для вставки (текстовая область)
- Описание (текстовая область)
- Скрыть слайд (флажок, используемый для временного скрытия слайда без его удаления)
С этой реализацией я не могу заставить работать несколько полей TinyMCE или выпадающий список изображений. Код TinyMCE кажется работать , пока я не добавить код, создавать инкрементные копии первого METABOX в этот момент я получаю это право ошибки над полем , где кнопки TinyMCE должны быть: Warning: array_push() [function.array-push]: First argument should be an array...
.
Кроме того, прямо сейчас я полагаюсь, что мои авторы знают, чтобы вставить ЛЮБОЕ видео или изображение для каждого слайда, и это нормально, но может быть лучше иметь переключатель, который позволит им выбрать, какой из слайдов (вероятно, по умолчанию изображение), которое связано с условным оператором отображения в шаблоне слайд-шоу.
Я занимаюсь загрузкой изображений через встроенное поле «Featured Image» на боковой панели, хотя я не возражаю против пользовательского метабокса, в котором просто говорится «Upload Images» в верхней части панели записи.
В конечном итоге я ищу слайд-шоу, похожее на это: http://www.nytimes.com/slideshow/2010/08/10/science/20100810angier-1.html . Я хочу, чтобы мой также мог иметь видео в качестве содержимого на слайде вместо изображения. Мне нужна интуитивно понятная и простая в использовании панель администратора для моих авторов (они не очень технически подкованы и не надежны при использовании html и / или коротких кодов). На всякий случай, если из примера не ясно, каждый слайд должен генерировать новый просмотр страницы.
Переупорядочение Drag'n'Drop не является высоким приоритетом, но было бы здорово. Я нашел плагин, который действительно хорошо справляется с этим: SlideDeck . К сожалению, плагин не соответствует моим потребностям, но способ, которым они обрабатывают порядок слайдов, довольно приятный. Это отдельный метабокс в боковой панели, который позволяет перетаскивать слайды в нужном вам порядке. Это также, как вы добавляете слайды, нажимая кнопку «Добавить слайд», которая добавляет еще один Metabox для слайдов на панель записи. Вот скриншот:
Вы также можете увидеть больше скриншотов в действии в репозитории WordPress .
Вот весь мой код:
Функции, настраивающие мой тип публикации слайд-шоу и нумерацию слайд-шоу: http://loak.pastebin.com/g63Gf186
Оригинальный код от DeluxeBloggingTips.com (DBT), на котором я основал свои метабоксы: http://loak.pastebin.com/u9YTQrxf
Версия кода DBT, которую я изменил, чтобы дать мне инкрементные версии одного и того же метабокса: http://loak.pastebin.com/WtxGdPrN
Модифицированная версия кода DBT, созданная Крисом Бербриджем для нескольких экземпляров TinyMCE: http://loak.pastebin.com/Mqb3pKhx С этим кодом работают TinyMCE.
Моя модификация кода Бербриджа, которая пытается включить мое увеличение и поле, которое позволяет вам выбрать изображение из выпадающего списка всех изображений, прикрепленных к сообщению: http://loak.pastebin.com/xSuenJTK В этой попытке TinyMCE сломан и выпадающий не работает.
Это, вероятно, не имеет значения, но на случай, если вам интересно, вот код, который я использую для извлечения кода встраивания из пользовательской мета-записи, изменения его размера и вставки в сообщение: http://loak.pastebin.com / n7pAzEAw
Это отредактированная версия исходного вопроса, отражающая текущее состояние проекта и отвечающая на вопросы, размещенные в комментариях. Спасибо Chris_O за то, что вы получили награду за это. Кроме того, спасибо Rarst и Джастину за помощь в решении многих вопросов на форуме ThemeHybrid.com . Я потратил много часов на это и застрял (я провел пару часов один в этом вопросе). Любая помощь будет принята с благодарностью.