Поддержка Проблемы и решения Шаблон для категорий

  • Доброго времени суток, коллеги!

    Давно не задавал вопросов по существу, ну вот и у меня возник вопрос:
    Включаем ЧПУ.
    URI для категории такой — site/category/uncategorized и используется шаблон category (общий).
    Набираем такой URI — site/category и попадаем на шаблон 404 и содержимое query:
    [pagename] => category
    Как его обмануть и отдать ему свой шаблон, например categories, не создавая для этого случая страницу и именованный шаблон для нее? Есть у кого опыт решения данного вопроса?

    WP 3.6b

    Всегда так было, что отсутствовал шаблон для вывода всех категорий по слагу «category»? Или я с чем-то путаю ввиду летней расслабленности? 😉

    UPD И не кажется ли вам странным, что одна сущность — таксономия (притом «встроенная») плавно превращается в другую?

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Модератор Yuri

    (@yube)

    Всегда так было, что отсутствовал шаблон для вывода всех категорий по слагу «category»?

    Вроде, всегда.

    И не кажется ли вам странным, что одна сущность — таксономия (притом «встроенная») плавно превращается в другую?

    ЧПУ — это вообще вещь в себе, к тому же постоянно мутирующая от версии к версии.

    Модератор Yuri

    (@yube)

    и попадаем на шаблон 404 и содержимое query:
    [pagename] => category

    Попробуйте обработать это прискорбное событие при помощи add_action(‘template_redirect’…
    P.S. Шаблон придется таки делать. Или фейкать $posts.

    Меня смущает другое, если глянуть внутрь, то «шаблоноизвлекатель» выглядит так http://core.trac.wordpress.org/browser/tags/3.5.2/wp-includes/template.php#L149
    По идее, должен работать шаблон taxonomy-category.php, только почему движок считает, что category является страницей, вот это удивительно.. Не баг ли? (глубже не смотрел, только предположение)..

    Со злости написал такой вариант:

    function stupid_redirect_template($template) {
        global $wp_query;
        if ($wp_query->is_404 && $wp_query->query['pagename'] == 'category') {
    	$template = get_categories_template();
        }
        return $template;
    }
    add_filter( 'template_include', 'stupid_redirect_template' );
    function get_categories_template() {
        return get_query_template('categories');
    }

    К какому результату приведет, пока не знаю… :))

    add_action(‘template_redirect’…

    Посмотрю, после, как успокоюсь от такого насилия на моим мировозрением построения URI :))

    Модератор Yuri

    (@yube)

    почему движок считает, что category является страницей,

    Видимо, потому что после /category ничего нет. Надо смотреть правила реврайта.

    Со злости написал такой вариант:

    Мне кажется, стоит добавить

    header('HTTP/1.1 200 OK');

    200 добавил.. Там в реврайтах черт ногу сломит. Ну их. Проще один page создать и забыть…
    Пока клацал по клавишам обнаружил некрасивость.. Оказывается UA комментатора вообще не фильтруется.. Теоретически может «всплыть» где-нибудь и у кого-нибудь, всякое ведь бывает 😉

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Шаблон для категорий» закрыта для новых ответов.