Necesito crear una o varias casillas de meta personalizadas para mi tipo de publicación personalizada "Presentación de diapositivas" (este tipo de publicación ya está creado). Cada metabox mantendrá el contenido en cada diapositiva de diapositivas y lo guardará en los campos personalizados correspondientes. Cada metabox debe contener los siguientes campos:
- Título (campo de texto)
- Imagen (ya sea un campo de texto para la URL de img o, idealmente, una lista desplegable que muestre miniaturas de las imágenes adjuntas a la publicación)
- Código de incrustación (área de texto)
- Descripción (wysiwyg)
- Ocultar la diapositiva (casilla de verificación para ocultar temporalmente una diapositiva sin eliminarla)
- Eliminar diapositiva (botón que elimina el contenido de los metacampos de publicación que se completaron con esta diapositiva)
También me gustaría un botón en algún lugar que me permita "Agregar una diapositiva", de modo que cuando se hace clic, agrega otro Meta Box personalizado "Diapositiva", que es un duplicado del primero pero agrega un número incremental a cada metacampo de publicación personalizado. Actualmente solo tengo 15 metaboxes y la plantilla de presentación de diapositivas está configurada de manera que si solo se completan 5 de los metaboxes, solo se muestran 5 diapositivas.
Finalmente, me gustaría poder reordenar las diapositivas, ya sea por "Arrastrar y soltar" o por otro campo de texto en el que pueda escribir el número de pedido.
Lo he conseguido casi donde lo necesito con el complemento "Más campos" y un poco de ayuda de código de Rarst. Con el complemento "Más campos" tengo los siguientes campos en cada metabox:
- Título (campo de texto)
- Imagen (una lista desplegable de las imágenes adjuntas a la publicación)
- Código de incrustación (área de texto)
- Descripción (wysiwyg)
- Ocultar la diapositiva (casilla de verificación para ocultar temporalmente una diapositiva sin eliminarla)
Aquí hay una captura de pantalla de cómo lo configuré a través del complemento "Más campos":
El problema con esto es que no hay forma de eliminar una diapositiva una vez que se hace porque "Más campos" no se usa en <?php delete_post_meta($post_id, $key, $value); ?>
ninguna parte. El otro problema con el complemento es que no es muy confiable y se rompe con frecuencia con las actualizaciones.
He podido implementar una solución similar con mis propios metaboxes personalizados que incluyen:
- Título (campo de texto)
- Imagen (campo de texto para la URL img)
- Código de incrustación (área de texto)
- Descripción (área de texto)
- Ocultar la diapositiva (casilla de verificación para ocultar temporalmente una diapositiva sin eliminarla)
Con esta implementación, parece que no puedo hacer que funcionen los múltiples campos de TinyMCE o el cuadro desplegable de imágenes. El código TinyMCE parece funcionar hasta que añadir el código que crean copias incrementales de la primera METABOX momento en el que me sale este error anterior derecha del campo donde los botones TinyMCE deben ser: Warning: array_push() [function.array-push]: First argument should be an array...
.
Además, en este momento estoy confiando en que mis escritores sepan poner CUALQUIERA un video o una imagen para cada diapositiva y eso está bien, pero puede ser mejor tener un botón de opción que les permita elegir cuál es la diapositiva (probablemente por defecto imagen) que está vinculada a una declaración de visualización condicional en la plantilla de presentación de diapositivas.
Estoy manejando las cargas de imágenes a través del cuadro integrado "Imagen destacada" en la barra lateral, aunque no me importaría un metabox personalizado que simplemente dijera "Cargar imágenes" en la parte superior del panel de escritura.
En última instancia, estoy buscando una presentación de diapositivas similar a esta: http://www.nytimes.com/slideshow/2010/08/10/science/20100810angier-1.html . Quiero que el mío también pueda tener un video como contenido en la diapositiva en lugar de una imagen. Necesito un panel de administración intuitivo y fácil de usar para mis escritores (no son muy expertos en tecnología y no son confiables usando html y / o códigos cortos). En caso de que no esté claro en el ejemplo, cada diapositiva debería generar una nueva página vista.
El reordenamiento de Drag'n'Drop no es una alta prioridad, pero sería genial. Encontré un complemento que maneja esto muy bien: SlideDeck . Desafortunadamente, el complemento no satisface mis necesidades, pero la forma en que manejan el pedido de las diapositivas es bastante ingeniosa. Es un metabox separado en la barra lateral que le permite arrastrar las diapositivas en el orden que desee. También es así como agrega diapositivas, haciendo clic en el botón "Agregar diapositiva" que agrega otro Metabox de diapositiva al panel de escritura. Aquí hay una captura de pantalla:
También puede ver más capturas de pantalla en acción en el repositorio de WordPress .
Aquí está todo mi código:
Las funciones que configuran mi Tipo de publicación de presentación de diapositivas y Paginación de presentación de diapositivas: http://loak.pastebin.com/g63Gf186
El código original de DeluxeBloggingTips.com (DBT) en el que basé mis Metaboxes: http://loak.pastebin.com/u9YTQrxf
La versión del código DBT que modifiqué para darme versiones incrementales del mismo metabox: http://loak.pastebin.com/WtxGdPrN
Una versión modificada del código DBT que Chris Burbridge creó para permitir múltiples instancias de TinyMCE: http://loak.pastebin.com/Mqb3pKhx Con este código, los TinyMCE funcionan.
Mi modificación del código de Burbridge que intenta incorporar mi incremento y un campo que le permite elegir la imagen de una lista desplegable de todas las imágenes adjuntas a la publicación: http://loak.pastebin.com/xSuenJTK En este intento, el TinyMCE está roto y el menú desplegable no funciona.
Esto probablemente no importa, pero en caso de que se lo esté preguntando, aquí está el código que uso para extraer el código de inserción de la meta personalizada de la publicación, cambiar su tamaño e insertarlo en la publicación: http://loak.pastebin.com / n7pAzEAw
Esta es una versión editada de la pregunta original para reflejar el estado actual del proyecto y responde las preguntas publicadas en los comentarios. Gracias a Chris_O por poner la recompensa por esto. Además, gracias a Rarst y Justin por ayudarme con mucho de esto en el foro ThemeHybrid.com . He pasado horas y horas en esto y estoy atrapado (pasé un par de horas solo en esta pregunta). Cualquier ayuda sería muy apreciada.