Рубрика: Рубрики

Как удалить из вывода the_category указанные рубрики?

Пример удаления рубрик

Практически все темы WordPress для вывода рубрик записи используют функцию the_category(). Что делать, если вы не хотите выводить весь список рубрик, присвоенных записи? Можно, конечно, заменить функцию the_category на какой-нибудь свой код, выводящий рубрики. Но лучше всего фильтровать вывод именно функции the_category, а не писать свой собственный "костыль". Для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

Как получить ярлык (slug) текущей рубрики?

Если вам в теме или плагине требуется узнать ярлык текущей рубрики, то вы можете воспользоваться следующим кодом в нужном вам шаблоне темы:

<?php 
if ( is_single() ) {
    $cats =  get_the_category();
    $cat = $cats[0];
} else {
    $cat = get_category( get_query_var('cat') );
}
$cat_slug = $cat->slug; // ярлык рубрики
$cat_id = $cat->cat_ID; // ID рубрики
$cat_name = $cat->name; // название рубрики
?>

Этот код будет работать на страницах рубрик и на страницах одиночных записей. По умолчанию код возьмет ярлык первой рубрики, к которой принадлежит запись.

Как использовать html-теги в описаниях рубрик и меток?

Пример удаленных html-тегов

WordPress по умолчанию удаляет всю html-разметку в описаниях рубрик (меток и прочих таксономий) при их сохранении. Если в вашей теме используются описания рубрик, то вывод этих описаний в обычных тегах параграфа может быть неприемлемым. Данное поведение WordPress можно исправить, для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

Как проверить существование родительской рубрики?

Иногда по каким-то причинам вебмастеру необходимо знать, является ли текущая рубрика родительской или дочерней. Например, при формировании заголовка архива рубрики. Для этого можно использовать следующий условный тег (добавьте код условного тега в файл functions.php вашей темы):

//условный тег проверки на дочерность start 
function is_subcategory ($catid) {
    $currentcat = get_category($catid);
    if ($currentcat->parent) {
        return true;
    } else {
        return false;
    }
} 
//условный тег проверки на дочерность end

Использовать этот условный тег очень просто, например, так:

Как вывести записи только родительской рубрики?

WordPress по умолчанию добавляет записи дочерних рубрик в вывод записей родительской рубрики. Таким образом, вывести записи только родительской рубрики без записей дочерних рубрик нельзя. Данную ситуацию можно исправить с помощью такого кода, добавленного в файл functions.php вашей темы:

//вывод записей только родительской рубрики start
function wph_only_parent_category($query) {
    if (!is_admin() && $query->is_main_query() && $query->is_category())
        $query->set('category__in', array(get_queried_object_id()));
}
add_action('pre_get_posts', 'wph_only_parent_category');
//вывод записей только родительской рубрики end

Данный сниппет будет работать только с основным циклом вывода записей (свои циклы, заданные через query_posts будут игнорироваться). Если вас это не устраивает, то вы можете убрать проверку на основной цикл:

Как вывести в виджете «Рубрики» пустые рубрики?

Вывод пустых рубрик

Стандартный виджет "Рубрики" не имеет опции настройки вывода пустых рубрик. Поэтому для вывода ссылок на пустые рубрики надо использовать специальный сниппет. Добавьте в файл functions.php вашей темы следующий код:

//вывод в виджете пустых рубрик start
function wph_show_empty_categories($cat_args) {
    $cat_args['hide_empty'] = 0;
    return $cat_args;
}
add_filter('widget_categories_args', 'wph_show_empty_categories');
//вывод в виджете пустых рубрик end

И в виджете рубрик вы тут же увидите ссылки на пустые (без записей) рубрики.

Как изменить текст «Выберите рубрику» в виджете рубрик?

Свой текст выбора рубрик

При использовании опции "В виде выпадающего меню" в виджете рубрик стандартным текстом для выбора рубрик будет "Выберите рубрику". На некоторых сайтах имеет смысл изменить этот текст на свой собственный. Для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

//свой текст в выпадающем меню рубрик start 
function wph_text_select_category($cat_args) {
    $cat_args['show_option_none'] = 'Выберите жанр';
    return $cat_args;
}
add_filter('widget_categories_dropdown_args', 'wph_text_select_category'); 
//свой текст в выпадающем меню рубрик end

Где "Выберите жанр" это новый текст выбора рубрик в выпадающем списке.