Buscar..


Parámetros

Parámetro Explicación
$template Pasa un parámetro al filtro, $template es la ruta actual al archivo apropiado para el tipo de publicación tal como se encuentra en el tema secundario activo o en el tema principal (si no hay un tema secundario en su lugar o el tema secundario tiene plantillas de rango inferior. Ver jerarquía de plantillas de WordPress para más detalles).

Observaciones

Debe devolver $template incluso si no está modificando. Si esto te confunde, mira los ejemplos donde se ha utilizado apply_filter() en el código

No debe configurar variables aquí para usarlas más adelante, hay mejores ganchos para esto.

Un flujo de programa útil para este filtro es:

  1. Check $template incluye nuestro nombre de tipo de publicación personalizado -> jerarquía de plantillas !!
  2. si no, busque en nuestro complemento los archivos adecuados -> Es mejor apuntar a archivos específicos en lugar de buscar archivos en las carpetas. Más eficiente. Pero completamente a la altura del desarrollador.
  3. devuelve la plantilla.

Ejemplo simple

Este filtro es muy útil. Uno de los problemas comunes para los desarrolladores es cómo incluir plantillas en los complementos que desarrollan.

El filtro se aplica inmediatamente después de que wordpress ubique la plantilla apropiada en el tema secundario / padre activo usando la jerarquía wp.

Tenga cuidado de definir cuándo desea modificar la ruta de la plantilla. En el siguiente ejemplo, el código verifica si la página actual es la vista única de nuestro tipo de publicación personalizada cpt .

Ejemplo suficientemente simple para empezar!

add_filter('template_include', 'custom_function');


function custom_function($template){
    
    //change a single post template...
    
    if( is_singular('cpt')  ){
         $template= 'path/to/another/template_file';
    }
      
    
    return $template;

}

Más ejemplo de Adv

add_filter('template_include', 'custom_function');


function custom_function($template){
    
    /*
    *     This example is a little more advanced. 
    *    It will check to see if $template contains our post-type in the path.
    *    If it does, the theme contains a high level template e.g. single-cpt.php
    *    If not we look in the plugin parent folder for the file. e.g. single-cpt.php
    */
    
  
    //check to see if the post type is in the filename (high priority file)
    //return template if it is!
    
    global $post;
   
    if( strpos($template, 'single-'.$post->post_type.'php' ) !== false && strpos($template, 'archive-'.$post->post_type.'php' ) !== false ){
        return $template;
    }
    
    $plugin_path = 'var/etc/wp-content/plugins/plugin'; //include own logic here...
    
    if( is_singular($post->post_type) && file_exists($plugin_path.'/single-'.$post->post_type.'.php')   ){
         $template= $plugin_path.'/single-'.$post->post_type.'.php';
    } elseif ( is_archive($post->post_type) && file_exists($plugin_path.'/archive-'.$post->post_type.'.php') ) {
         $template= $plugin_path.'/archive-'.$post->post_type.'.php';
    } 
      
    return $template;
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow