Métodos para integrar datos de complementos con temas

15

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!

    
pregunta tollmanz 12.08.2011 - 01:25

3 respuestas

4

No puedo responder a todas las Q que me pediste, ya que la lectura de la Q llevó bastante tiempo hasta ahora;), pero trato de darte una idea de mi experiencia personal con el desarrollo de complementos de código abierto y gratuitos.

1. Nunca hagas demasiado. Las características son la muerte de cada plugin. Primero construye una versión básica y prueba la reacción de tus usuarios. Si su complemento recibe mucha atención, puede integrar las funciones que se solicitan en su mayoría.

2. Evite llenar todos los casos de uso. Necesitas mantener tu plugin. WP ofrece una nueva versión cada tres meses. Y a veces es difícil de seguir con todos tus complementos. Para hacer un ejemplo: una nueva versión de la API de configuración está actualmente discutida en Trac . Cuando esto termine, entonces existe la posibilidad de que muchos desarrolladores de complementos o temas necesiten cambiar una gran parte del código y algunas personas, como yo, incluso han escrito una capa de abstracción sobre la API. Así que necesitas volver, reescribir tu capa base / abstracción y luego volver a trabajar todo lo que llama partes de eso. Prometo que esto es mucho trabajo. Y aún más si está ligado a tu código. Cuando comienza a llenar una gran cantidad de casos de uso, también tiene una gran cantidad de evolución del código central de WP que necesita monitorear, así como también tiene mucho trabajo para mantener su código actualizado.

3. Nunca intente agrupar muchos ejemplos de código (o plantillas) en sus complementos o temas. Si desea apuntar a los desarrolladores y usuarios finales: use su blog para la documentación. Los desarrolladores odian este tipo de cosas y los usuarios finales nunca están satisfechos (ver: llenar cada caso de uso).

4. Divida su código en archivos individuales. Regla de oro: un archivo por una parte. Ejemplo: styles.php, scripts.php, taxonomies.php, cpts.php, etc. Cargue todo de una clase "madre" (fábrica) y mantenga sus cosas "conectables". Si necesitas reescribir cosas, las encontrarás fácilmente. Si los desarrolladores están buscando algo: lo encontrarán fácilmente. Muchos archivos bien nombrados, no te dañen.

5. Si tienes una lista de estilos básicos (clases), déjelo en manos del usuario . Las posibilidades son simplemente demasiado altas, que los estilos del tema u otros complementos interceptarán tus definiciones (sin importar cuánta especificidad incluyas). Solo intenta explicarlo en algún lugar con la menor cantidad de texto posible.

6. Me encanta tu complemento. Pero déjalo ir si estás aburrido. :)

Ahora, en pocas palabras, algo sobre su idea de complemento en detalle:

A. Los archivos de plantilla son malos. Como dije: documéntelo en su blog, ofrezca marcas de ejemplo y estilos allí. Su blog se beneficiará (y usted también si tiene anuncios).

B. Los códigos cortos son kool. No dañan a nadie si el complemento se ha eliminado (en la mayoría de los casos) y podría extenderse / evolucionar posteriormente a los botones TinyMCE (que la gente ama).

C. Aclare que su complemento necesita otro complemento. Pregunte esto y agregue una nota a admin_notices (a través de register_activation_hook) si el otro complemento no se cierra (vincúlelo en este caso) o si no está activado (puede hacer esto para el usuario en la activación). También tenga en cuenta que este complemento proviene de una fuente confiable y se mantendrá durante los próximos años.

Nota: nada de lo que escribí es más que mi opinión personal, lo que refleja mi experiencia.

    
respondido por el kaiser 12.08.2011 - 03:30
2

En algunos aspectos, tiene que sopesar el equilibrio entre la creación de un complemento o un tema, si su escenario requiere una gran cantidad de personalización / características, siempre es mejor crear un tema en su lugar. De esa manera, el usuario puede personalizar en términos de apariencia, lo que siempre es más fácil que personalizar la funcionalidad (mediante la introducción de códigos cortos en todas partes), tiene un mayor control de funciones, funciona con otros complementos, etc.

Un complemento que intente integrarse en gran medida con toda la variedad de temas en el mercado causará muchos problemas y, sinceramente, mucho trabajo para usted.

Por ejemplo, en lugar de crear un complemento muy integrado basado en la administración de música y discografía, en lugar de crear un tema para ese propósito, esto se está volviendo más popular para los mercados especializados que requieren trabajo personalizado. Un ejemplo del mundo real sería un tema basado en bienes raíces, no hay forma de que use un complemento para esto, ya que tiene un conjunto de características tan profundo, en su lugar se crea desde el principio como un tema, ya que los temas pueden aprovecharse. Todas las características de los complementos de todos modos.

También es probable que, desde una perspectiva de marketing, un tema de nicho funcione mejor que un complemento al equilibrar las características de front-end.

    
respondido por el Wyck 12.08.2011 - 18:35
2

Páginas virtuales

Una tercera técnica que vi fue asignar una página especial como el marcador de posición para tu complemento y usar el filtro 'the_content' para generar lo que necesites para producir.

De esta manera, puede crear plantillas que se mezclen con la estructura del tema, ya que no tiene que lidiar con encabezados, barras laterales, pies de página y divs de envoltura.

Puede encontrar un gran ejemplo de esto en el complemento bbPress:

enlace

    
respondido por el scribu 12.08.2011 - 17:15

Lea otras preguntas en las etiquetas