@teodor7teodor7

Как сделать шаблон для постов определенной категории в wordpress?

Как сделать шаблон для одиночных постов определенной категории в wordpress? То есть что бы посты в разных категориях имели разный шаблон.
  • Вопрос задан
  • 1261 просмотр
Пригласить эксперта
Ответы на вопрос 1
Raxen
@Raxen
Lead Frontend Developer, Beeline
В function.php добавляем -
// Шаблон родительской категории для дочерних
add_action('template_redirect', 'wpds_parent_category_template');
function wpds_parent_category_template()
{
    if (!is_category())
        return true; 

    // получаем объект текущей рубрики
    $cat = get_category(get_query_var('cat'));
    
    while ($cat && !is_wp_error($cat)) {
        $template = get_template_directory() . "/category-{$cat->slug}.php";
        // загружаем, если файл шаблона существует.
        if (file_exists($template)) {
            load_template($template);
            exit;
        }

        $cat = $cat->parent ? get_category($cat->parent) : false;
    }
}

// Подключение шаблонов к постам 
if(!function_exists('get_post_templates')) {
function get_post_templates() {
    $templates = wp_get_theme()->get_files( 'php', 1 );
    $post_templates = array();

    $base = array(trailingslashit(get_template_directory()), trailingslashit(get_stylesheet_directory()));

    foreach ((array)$templates as $template) {
        $template = WP_CONTENT_DIR . str_replace(WP_CONTENT_DIR, '', $template); 
        $basename = str_replace($base, '', $template);

        if (false !== strpos($basename, '/'))
            continue;

        $template_data = implode('', file( $template ));

        $name = '';
        if (preg_match( '|Single Post Template:(.*)$|mi', $template_data, $name))
            $name = _cleanup_header_comment($name[1]);

        if (!empty($name)) {
            if(basename($template) != basename(__FILE__))
                $post_templates[trim($name)] = $basename;
        }
    }

    return $post_templates;
}}


Теперь можно делать шаблоны в категориях по принципу
category-{name}.php

При редактировании поста нужно выбрать шаблон нужной категории
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы