WordPress как на ладони
wordpress jino

Один шаблон для нескольких категорий

Необходимо сделать шаблон для нескольких категорий. Ну например у меня есть 6 категорий, 3 из них работают с одним шаблоном, а остальные с другим. Как сделать под но категорию знаю. А вот как под несколько никак не найду. Помогите пожалуйста.

1
levshaszr3 2 месяца назад
  • 2
    campusboy1948 cайт: www.youtube.com/c/wpplus @

    Я для этого использую хук template_include. Вот пример файла "роутера":

    <?php
    /**
     * РАСПРЕДЕЛЕНИЕ ШАБЛОНОВ отображения контента в зависимости от раздела сайта
     * Данный файл создан, чтобы хранить шаблоны в стуктурированных папках и произвольными именами, а не в корне движка
     *
     * @param  string $template путь к шаблону по умолчанию
     *
     * @return string путь к пользовательскому шаблону
     */
    function mt_tpl_path( $template ) {
    
    	if ( is_post_type_archive( 'service' ) ) {
    		return mt_locate_template( 'templates/category-services.php' );
    	}
    
    	// Продукция
    	if ( is_singular( 'post' ) ) {
    		return mt_locate_template( 'templates/single-product.php' );
    	}
    
    	// Сервис
    	if ( is_singular( 'service' ) ) {
    		return mt_locate_template( 'templates/single-service.php' );
    	}
    
    	// Новости
    	if ( is_singular( 'news' ) ) {
    		return mt_locate_template( 'templates/single-news.php' );
    	}
    
    	if ( is_category() ) {
    		return mt_locate_template( 'templates/category-products.php' );
    	}
    
    	return $template;
    }
    
    add_filter( 'template_include', 'mt_tpl_path', 100 );
    
    /**
     * Упрощенная функция проверки и замены шаблона на пользовательский вариант
     *
     * @global string $template дефолтный путь к шаблону
     *
     * @param string  $path     пользовательский путь к шаблону
     *
     * @return string $template путь к шаблону
     */
    function mt_locate_template( $path ) {
    	global $template;
    
    	// Проверяем наличие файла шаблона по указанному пути
    	if ( $new_template = locate_template( [ $path ] ) ) {
    		$template = $new_template;
    	}
    
    	return $template;
    }
    levshaszr 2 месяца назад

    Спасибо. Завтра обязательно попробую.

    Kama 2 месяца назад

    Для этих целей также подойдут хуки

    • (type)_template_hierarchy - фильтрует массив названий файлов иерархии, по которому будет идти поиск нужного файла. С WP 4.7.

    • (type)_template - фильтрует путь до уже определившегося файла шаблона.

    Все варианты параметра type смотрите в одноименном параметр $type функции get_query_template().

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.