✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Incluir plantillas personalizadas en nuestros complementos de WordPress

20

Creo que uno de los aspectos más subestimados, o quizás uno de los aspectos raramente discutidos del desarrollo de complementos personalizados, es la capacidad de incluir plantillas personalizadas en nuestros complementos de WordPress.

Y, para ser honesto, lo entiendo: soy bastante firme en lo que debería ser un complemento y lo que debería ser un tema.

Eso es:

  • los temas son para presentación,
  • Los complementos son funcionalidad.

Si incluyo plantillas en un complemento, ¿no estoy haciendo lo mismo que cuando los desarrolladores incluyen funcionalidad en sus temas?

Como con tantas cosas en desarrollo, creo que depende. Quiero decir, agregar muchas funciones que te encierran en un tema es algo de lo que no soy fanático. Del mismo modo, si tiene un complemento destinado a mostrar datos en el front-end y es independiente del tema, entonces tiene sentido.

Así que tienes que ser juicioso en tus decisiones.

Independientemente, hay un conjunto común de pasos que podemos usar al incluir plantillas personalizadas en nuestros complementos de WordPress.

Y eso es lo que esta publicación va a mostrar.

Si va a incluir plantillas personalizadas en el complemento, supondré que está utilizando plantillas únicas y de archivo. De lo contrario, use solo los ganchos y el código a continuación que necesita.

Incluir plantillas personalizadas en nuestros complementos de WordPress

Para ambos, sin embargo, sepa esto:

Usando estos ganchos, puede decirle a WordPress dónde residen las plantillas personalizadas en su complemento.

Organización de plantillas

Para mí, generalmente tengo un  directorio de plantillas en mi complemento que ubica al mismo nivel que los  directorios de activos, src y proveedor.

Incluir plantillas personalizadas en nuestros complementos de WordPress

Esto facilita saber dónde residen y proporciona una forma consistente de incluirlos en todos los complementos que creó. Después de todo, hay algo que decir para ser consistente en las convenciones que usamos.

Incluyendo las Plantillas

Suponiendo que tiene  una plantilla single-acme.php y una plantilla archive-acme.php, es fácil incluirla. Y aunque soy más fanático del uso de la programación orientada a objetos, mostraré cómo incluir estas plantillas usando código de procedimiento.

Si lo desea, es fácil convertir este código en código orientado a objetos. Además, voy a suponer que también incluyes esto para los tipos de publicaciones personalizadas.

Siempre puede omitir un condicional para un tipo de publicación personalizada si desea simplemente incluir estas plantillas pero, en mi experiencia, encuentro raro que estas situaciones no usen tipos de publicación personalizada, pero no conozco su situación.

Dicho esto, aquí está el código.

Definición de ganchos

Primero, necesitamos definir los ganchos. Esto es relativamente simple ya que vamos a usar los ganchos descritos anteriormente.

Primero, la plantilla única :

<?php

add_action('single_template', 'acmeIncludeSingleTemplate');
/**
 * Includes a custom, single template as included in a plugin. If
 * the template is being viewed for a custom post type then use it;
 * otherwise, use the template that's provided by WordPress at runtime.
 *
 * @param  string $originalTemplate the path to the original template
 *
 * @return string the path to the original template or the custom template.
 */
function acmeIncludeSingleTemplate($originalTemplate)
{
   // More to come...
}

Y luego la plantilla de archivo :

<?php

add_action('archive_template', 'acmeIncludeArchiveTemplate');
/**
 * Includes a custom, archive template as included in a plugin. If
 * the template is being viewed for a custom post type then use it;
 * otherwise, use the template that's provided by WordPress at runtime.
 *
 * @param  string $originalArchiveTemplate the path to the original template
 *
 * @return string the path to the original template or the custom template.
 */
function acmeIncludeArchiveTemplate($originalArchiveTemplate)
{
  // More to come...
}

Y ahora podemos implementar el código para cada una de las funciones.

Agregar el código

Entonces, primero, veremos la plantilla única :

<?php

add_action('single_template', 'acmeIncludeSingleTemplate');
/**
 * Includes a custom, single template as included in a plugin. If
 * the template is being viewed for a custom post type then use it;
 * otherwise, use the template that's provided by WordPress at runtime.
 *
 * @param  string $originalTemplate the path to the original template
 *
 * @return string the path to the original template or the custom template.
 */
function acmeIncludeSingleTemplate($originalTemplate)
{
  $singleTemplate = plugin_dir_path(
    dirname(
      __DIR__) );
  $singleTemplate .= '/templates/single-acme.php';

  if ('acme-cpt' === get_post_type(get_the_ID())) {
      if (file_exists($singleTemplate)) {
          return $singleTemplate;
      }
  }

  return $originalTemplate;
}

Y ahora la plantilla de archivo :

<?php

add_action('archive_template', 'acmeIncludeArchiveTemplate');
/**
 * Includes a custom, archive template as included in a plugin. If
 * the template is being viewed for a custom post type then use it;
 * otherwise, use the template that's provided by WordPress at runtime.
 *
 * @param  string $originalArchiveTemplate the path to the original template
 *
 * @return string the path to the original template or the custom template.
 */
function acmeIncludeArchiveTemplate($originalArchiveTemplate)
{
  $archiveTemplate = plugin_dir_path(
    dirname(
      __DIR__) );
  $archiveTemplate .= '/templates/archive-acme.php';

  if ('acme-cpt' === get_post_type(get_the_ID())) {
      if (file_exists($archiveTemplate)) {
          return $archiveTemplate;
      }
  }

  return $originalArchiveTemplate;
}

Si ha prestado mucha atención al código, sabe que hay muy pocas cosas diferentes. De hecho, el proceso general se puede resumir de la siguiente manera:

  1. definir el gancho,
  2. localizar la plantilla,
  3. verifique el tipo de publicación personalizada,
  4. la plantilla existe, utilízala
  5. de lo contrario, use la plantilla predeterminada

Y este es el proceso para las plantillas individuales y de archivo.

Escritura de plantillas compatibles

Y finalmente, y esto es importante especialmente si desea que la plantilla sea lo más agnóstica posible, trato de usar tantas etiquetas de plantilla de WordPress integradas como sea posible cuando muestre el contenido relacionado con el complemento. Esto permite a los desarrolladores de temas diseñarlo fácilmente para que encaje con su tema.

No, no podrá acomodar todos los temas, pero esa es la naturaleza de los temas de WordPress. El punto es tomar tanto trabajo de recuperación y representación de datos de la plantilla como sea posible para que los desarrolladores front-end puedan administrarlos fácilmente.

Fuente de grabación: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More