Añadir y cargar plantillas de página desde un plugin en WordPress

En esta entrada vamos a ver como añadir plantillas de página (templates) a un tema y cargarlas mediante un plugin. Partiremos de la base de que nuestro plugin tiene un directorio llamado templates en el que tenemos nuestro archivo de plantilla llamado template-ejemplo.php.

El proceso consta de dos pasos:

  • Añadir nuestra plantilla a la lista desplegable ‘Plantilla‘ del editor de WordPress.
  • Decirle a WordPress donde se encuentra nuestro archivo de plantilla.

Para añadir nuestra plantilla a la lista desplegable de plantillas utilizaremos el gancho de filtro theme_page_templates:


add_filter( 'theme_page_templates', 'galussothemes_add_templates' );
function galussothemes_add_templates( $templates ) {

	$templates['template-ejemplo.php'] = __( 'Template ejemplo', 'text-domain' );

	return $templates;

}

En el código anterior, $templates es un array asociativo que contiene la lista de las plantillas de página para el tema activo, donde las claves son los nombres de los archivos y los valores los nombres traducibles de las plantillas. Lo que hemos hecho es añadir a esa lista (al array $templates) nuestra plantilla.

El siguiente paso es decirle a WordPress donde se encuentra nuestra plantilla ya que por defecto la buscará en el directorio del tema activo. Para ello utilizaremos el filtro page_template:


add_filter( 'page_template', 'galussothemes_template_redirect' );
function galussothemes_template_redirect( $template ) {

	$plugin_dir = dirname( __FILE__ );

	if ( is_page_template( 'template-ejemplo.php' ) ) {

		$template = $plugin_dir . '/templates/template-ejemplo.php';

	}

	return $template;

}

Y ya, esto es todo lo que necesitas para añadir y cargar plantillas de página desde un plugin.

Leave a Reply

Your email address will not be published. Required fields are marked *