Me gustaría obtener algunas opiniones sobre las mejores prácticas para desarrollar complementos de WordPress que brinden integración de temas.
Para que tenga sentido al hacer esta pregunta, permítame comenzar con un ejemplo hipotético de un escenario del que tengo curiosidad. Imagina que creo un plugin llamado "Discografía". La discografía registra tres tipos de publicaciones personalizadas: "Bandas", "Álbumes" y "Pistas". El complemento también proporciona cajas de metadatos 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 Posts 2 Posts . Dentro del administrador, el usuario puede agregar nuevas bandas, que pueden asociarse con álbumes, que a su vez se asocian con pistas, todas las cuales tendrán muchos otros datos agregados a través de meta box 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 proporcione algunas pantallas predeterminadas para los datos. Un usuario / desarrollador más avanzado estaría bien si tuviera solo este administrador. Sería bastante fácil para ella agarrar 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, podría mostrar algo como (los paréntesis muestran las formas en que se podría mostrar la información en el orden de la jerarquía de la 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 bandas (template-band-list.php, page-band-listing.php, page- {id} .php, page.php, index.php, shortcode)
- Lista 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 exista alguna 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 de 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 única plantilla de publicación que atraiga a la banda, la fecha de lanzamiento, el sello discográfico, las versiones del álbum, las pistas, etc. Como desarrollador de complementos, creo que sería importante proporcionar eso. Sé que la plantilla no funcionaría con todos los temas, pero debería haber algún valor predeterminado que pueda integrarse aún más con el tema del usuario.
Una vez más, tengo curiosidad por saber cuál es la mejor manera de manejar esta situación. Creo que podrías hacer lo siguiente.
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 lugar del sitio. Sería útil presentar bandas en páginas específicas o crear páginas separadas para cada banda (no es muy eficiente, pero algunos usuarios abordan las cosas de esta manera). El código abreviado generaría HTML, que estaría vinculado a un archivo CSS provisto que proporcionaría una buena vista predeterminada de los datos deseados. Todo estaría contenido dentro de los archivos del complemento y nada tendría que hacerse con el tema.
Archivos de plantilla
El complemento también podría incluir 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 del tema para que el tema encuentre las plantillas correctas cuando se vean los tipos de publicaciones. Incluso podría llegar a proporcionar una interfaz que le permita al usuario mover los archivos con un solo clic (nota: no crearía los archivos en la carpeta de temas del usuario al activarse porque agregar archivos a su tema sin que ellos lo inicien es un error) .
También puede usar filtros para utilizar estos archivos sin moverlos de la carpeta del complemento, manteniendo todo autocontenido. He visto los filtros "template_include" y "{$ type} _template" utilizados para este propósito. De hecho, puede 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 qué piensan los demás como 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!