Поиск…


параметры

параметр объяснение
$template Пропускает один параметр в фильтр, $template - это текущий путь к соответствующему файлу для типа сообщения, найденного в активной дочерней теме или родительской теме (если ни одна дочерняя тема не установлена ​​или дочерняя тема имеет более ранние шаблоны). См. Иерархию шаблонов Wordpress Больше подробностей).

замечания

Вы должны вернуть $template даже если не изменять. Если это вас смущает, посмотрите примеры, где apply_filter() используется в коде

Вы не должны настраивать переменные здесь для использования позже, для этого есть лучшие крючки.

Полезный программный поток для этого фильтра:

  1. $template включает наше настраиваемое имя типа письма -> иерархия шаблонов!
  2. если нет, найдите наш плагин для подходящих файлов -> Лучше указывать на определенные файлы, а не искать через папки для файлов. Более эффективным. Но полностью до разработчика.
  3. верните шаблон.

Простой пример

Этот фильтр очень полезен. Одной из распространенных проблем для разработчиков является включение шаблонов в плагины, которые они разрабатывают.

Фильтр применяется сразу же после того, как wordpress находит соответствующий шаблон в активной дочерней / родительской теме, используя иерархию wp.

Будьте осторожны, чтобы определить, когда вы хотите изменить путь к шаблону. В приведенном ниже примере код проверяет, является ли текущая страница единственным видом нашего настраиваемого типа сообщений cpt .

Простой пример для начала!

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;

}

Пример больше

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow