Настройка отображения категорий и подкатегорий

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

Помогите настроить WP, а то у самого уже голова кругом идет от безспешных попыток. Итак.

Среда возникновения проблем: WordPress 2.3.3 (локализация – lecactus), тема – Dragee 1.0 (от Julian Klewes).

Проблема первая. На сайте ко всем категориям есть описание, которое отображается на первой странице категории перед постами (сразу под названием категории). У многих категорий есть подкатегории и с помощью манипуляций добился того, что посты из подкатегорий не отображаются на странице родительской категории. И столкнулся вот с какой задачей. есливсе посты рсположенны в подкатегории, а в родительской категории нет постов, то страница родительской категории просто не открывается. Как сделать, чтобы страница категории открывалась даже если в ней нет записей?

Проблема вторая. Как я уже написал выше, структура сайта подразумевает большое количество подкатегорий. Вот толкь отображаются они через одно место… Примерно так:
-категория 1
-подкатегория 1
-подкатегория 2
-категория 2
Т.е., нет ни отступов, ни выпадающего списка, просто все идет подряд друг за дружкой. Как исключить подкатегории из списка меню, чтобы там отображались только родительские категории.

Как исключить подкатегории из списка меню, чтобы там отображались только родительские категории.

Если вы не используете виджеты

1. Откройте файл sidebar.php (по идее именно в сайдбаре у вас показываются категории)
2. Найдите вызов функции wp_list_categories
3. Добавьте параметр hierarchical=0

Если используете, то где-то в настройках виджета найти наверное можно

Если вы не используете виджеты

1. Откройте файл sidebar.php (по идее именно в сайдбаре у вас показываются категории)
2. Найдите вызов функции wp_list_categories
3. Добавьте параметр hierarchical=0

Если используете, то где-то в настройках виджета найти наверное можно

Нет, виджеты не использую, хотя тема поддерживает их. Предложенный Вами вариант пробовал, вот только вместо подкатегорий из меню исчезают наименования самих категорий! Чертовщина какая-то, честное слово! Может это важно, но в теме список категорий выводит функция wp_list_cats.

Как сделать, чтобы страница категории открывалась даже если в ней нет записей?

Очень просто: нужно перехватить action ‘template_redirect’, и, если затребована категория, вернуть статус 200 и инклюдить нужный шаблон.

Очень просто: нужно перехватить action 'template_redirect', и, если затребована категория, вернуть статус 200 и инклюдить нужный шаблон.

Звучит действительно просто 🙂 Но как это сделать человеку без образования программиста? Можете поделиться пошаговой инструкцией? В долгу не останусь!

А зачем человек "без образования программиста" (которое, к слову, для этого не требуется, достаточно пионерского уровня) лезет в дебри, в которых не ориентируется? 😉

На вскидку это выглядит так:

add_action('template_redirect', 'no_404_for_empty_cat');
function no_404_for_empty_cat() {
    global $cat;
    if ($cat) { 
        header('HTTP/1.1 200 OK');
        include(TEMPLATEPATH . "/category.php");
        exit;
    }
}

Что-то мне подсказывает, что этим не ограничится, что придется рассказывать, куда вставлять, потом разбираться, почему оно не то делает… Вот скажите, оно мне надо? А должников и без Вас хватает: два банка, одна партия…

Ю.Б. – не выйдет так, я недавно пробовал. Проблема в том что перехватив template_redirect вы просто выполните свой код, например подключите шаблон, а дальше пойдет выполнение скрипта…

Вот если бы WP писал код так… if( !do_action(‘template_redirect’) ) return; то другое дело

<?php
/**
 * Loads the correct template based on the visitor's url
 * @package WordPress
 */
if ( defined('WP_USE_THEMES') && constant('WP_USE_THEMES') ) {
    do_action('template_redirect');


    if ( is_robots() ) {
        do_action('do_robots');
        return;
    } else if ( is_feed() ) {
        do_feed();
        return;
    } else if ( is_trackback() ) {
        include(ABSPATH . 'wp-trackback.php');
        return;
    } else if ( is_404() && $template = get_404_template() ) {
        include($template);

–удалено– – невнимательно код глянул

Прибить action exit`ом – святое дело 🙂

Когда выводите категории с помощью wp_list_categories добавляете параметр hide_empty=0

Anonymous
Отправить
Ответ на: