Me gustaría obtener algunas opiniones sobre las mejores prácticas para desarrollar complementos de WordPress que brinden integración de temas.
Para tener sentido al hacer esta pregunta, permítanme comenzar con un ejemplo hipotético de un escenario que me interesa. Imagine que creo un complemento llamado "Discografía". La discografía registra tres tipos de publicaciones personalizadas: "Bandas", "Álbumes" y "Pistas". El complemento también proporciona meta cuadros que proporcionan detalles para cada tipo de publicación, así como taxonomías personalizadas para organizar cada tipo de publicación. Estos tipos de publicaciones están vinculados con el complemento Publicaciones 2 Publicaciones . Dentro del administrador, el usuario puede agregar nuevas bandas, que pueden asociarse con álbumes, que, a su vez, están asociadas con pistas, a todas las cuales se les agregarán muchos otros datos a través de meta cajas y taxonomías.
Ahora, no quiero que este complemento simplemente configure un administrador para que los usuarios ingresen esta información; Me gustaría que proporcionara algunas pantallas predeterminadas para los datos. Un usuario / desarrollador más avanzado estaría bien si solo tuviera este administrador. Sería bastante fácil para ella obtener esos datos y usarlos en el tema; sin embargo, sin algunas vistas predeterminadas, este complemento sería inútil para la mayoría de los usuarios. Para este ejemplo, puede mostrar algo como (los paréntesis muestran las formas en que se puede mostrar la información en orden de jerarquía de plantilla)
- Bandas (single-prefix-band.php, single.php, index.php, shortcode)
- Álbumes (single-prefix-album.php, single.php, index.php, shortcode)
- Pistas (single-prefix-track.php, single.php, index.php, shortcode)
- Listado de banda (template-band-list.php, page-band-listing.php, page- {id} .php, page.php, index.php, shortcode)
- Listado de álbumes (template-album-list.php, page-album-listing.php, page- {id} .php, page.php, index.php, shortcode)
- Línea de tiempo del álbum (template-album-timeline.php, page-album-timeline.php, page- {id} .php, page.php, index.php, shortcode)
Es importante que haya una presentación predeterminada para estos tipos de publicaciones, ya que los archivos de plantilla predeterminados no mostrarán toda la información necesaria para cada uno de los tipos de publicaciones. Por ejemplo, el tema Twenty Eleven, por defecto, solo mostraría el nombre, las categorías, la descripción y la fecha de publicación de un álbum. No es muy útil para un álbum. Me gustaría proporcionar una plantilla de publicación única que atraiga a la banda, la fecha de lanzamiento, el sello discográfico, las versiones del álbum, las pistas, etc. Como desarrollador de complementos, sentiría que sería importante proporcionar eso. Sé que la plantilla no funcionaría para todos los temas, pero debería haber algún valor predeterminado que pueda integrarse aún más con el tema del usuario.
Nuevamente, tengo curiosidad acerca de cuál es la mejor manera de manejar esta situación. Creo que podrías hacer cualquiera de los siguientes.
Shortcodes
Los códigos cortos se pueden usar como una forma muy flexible y fácil de usar para permitir que los no desarrolladores agreguen bandas, álbumes, pistas, listas de bandas, etc. en cualquier parte del sitio. Sería útil para presentar bandas en páginas específicas o crear páginas separadas para cada banda (no muy eficiente, pero algunos usuarios abordan las cosas de esta manera). El shortcode generaría HTML, que estaría vinculado a un archivo CSS proporcionado que proporcionaría una buena vista predeterminada de los datos deseados. Todo estaría contenido dentro de los archivos del complemento y no habría que hacer nada con el tema.
Archivos de plantilla
El complemento también podría enviarse con archivos de plantilla. Los archivos de plantilla se pueden marcar y diseñar para una buena vista predeterminada. Puede proporcionar instrucciones para que su usuario mueva los archivos a la carpeta de temas para que el tema encuentre las plantillas correctas cuando se vean los tipos de publicaciones. Incluso podría ir tan lejos como proporcionar una interfaz que permita al usuario mover los archivos con un solo clic (nota: no crearía archivos en la carpeta de temas del usuario en la activación porque agregar archivos a su tema sin que ellos lo inicien es malo) .
También puede usar filtros para utilizar estos archivos sin moverlos de la carpeta de complementos, manteniendo todo autocontenido. He visto los filtros "template_include" y "{$ type} _template" utilizados para este propósito. De hecho, podría usar plantillas de la carpeta de temas y, si no están presentes, puede recurrir a estos filtros para proporcionar las vistas predeterminadas.
La pregunta
Me gusta saber lo que otros piensan que son las mejores prácticas para estas situaciones, si las ideas presentadas son problemáticas de alguna manera, y cualquier alternativa que no haya incluido.
¡Gracias!