Убрать ссылки с родительской категории

Admin PHP, WordPress

PHP код убирающий ссылки с родительских разделов (также их можно назвать главными разделами). Иными словами ссылки в разделах остаются только на подразделы. В сами разделы сайта зайти по названию этого раздела не получится — ссылки убираются.

Такая задача может возникнуть, когда требуется выводить заголовки разделов и ссылки в них на подразделы. А предоставлять пользователям доступ в главный раздел не хочется, потому что иначе там будет хаос из многочисленных статей, которые находятся в подразделах.

Убрать ссылки с родительской категории

С помощью этой функции можно убрать ссылки с родительских категорий. Можно использовать в sidebar.php.

// if ($category->category_parent  != 0) { }
// Убирает ссылки с родительских категорий, используется в sidebar с помощью - 'walker' => $walker,
class My_Walker_Category extends Walker_Category{
    function start_el(&$output, $category, $depth, $args) {
        extract($args);
 
        $cat_name = esc_attr( $category->name );
        $cat_name = apply_filters( 'list_cats', $cat_name, $category );
        if ( $category->parent > 0 ) {
            $link = '<a href="' . esc_attr( get_term_link( $category ) ) . '" ';
            if ( $use_desc_for_title == 0 || empty($category->description) )
                $link .= 'title="' . esc_attr( sprintf(__( '%s' ), $cat_name) ) . '"';
            else
                $link .= 'title="' . esc_attr( strip_tags( apply_filters( 'category_description', $category->description, $category ) ) ) . '"';
            $link .= '>';
        }
            $link .= $cat_name;
 
        if ( $category->parent > 0 ) {
            $link .= '</a>';
        }
 
        if ( !empty($feed_image) || !empty($feed) ) {
            $link .= ' ';
 
            if ( empty($feed_image) )
                $link .= '(';
 
            $link .= '<a href="' . get_term_feed_link( $category->term_id, $category->taxonomy, $feed_type ) . '"';
 
            if ( empty($feed) ) {
                $alt = ' alt="' . sprintf(__( 'Feed for all posts filed under %s' ), $cat_name ) . '"';
            } else {
                $title = ' title="' . $feed . '"';
                $alt = ' alt="' . $feed . '"';
                $name = $feed;
                $link .= $title;
            }
 
            $link .= '>';
 
            if ( empty($feed_image) )
                $link .= $name;
            else
                $link .= "<img src='$feed_image'$alt$title" . ' />';
 
            $link .= '</a>';
 
            if ( empty($feed_image) )
                $link .= ')';
        }
 
        if ( !empty($show_count) )
            $link .= ' (' . intval($category->count) . ')';
 
        if ( !empty($show_date) )
            $link .= ' ' . gmdate('Y-m-d', $category->last_update_timestamp);
 
        if ( 'list' == $args['style'] ) {
            $output .= "\t<li";
            $class = 'cat-item cat-item-' . $category->term_id;
            if ( !empty($current_category) ) {
                $_current_category = get_term( $current_category, $category->taxonomy );
                if ( $category->term_id == $current_category )
                    $class .=  ' current-cat';
                elseif ( $category->term_id == $_current_category->parent )
                    $class .=  ' current-cat-parent';
            }
            $output .=  ' class="' . $class . '"';
            $output .= ">$link\n";
        } else {
            $output .= "\t$link<br />\n";
        }
    }
}

Пример вывода этой функции в sidebar.php:

<?php  
//$walker = new My_Walker_Category();
//$children = wp_list_categories;
$args = array(
'title_li'           => 0,  
'orderby'            => 'name',
'show_count'         => 0,
'use_desc_for_title' => 0,
'exclude'            => '11',
'hide_empty'         => 1,  
'walker' => $walker, // введённый параметр в functions - убирает ссылки с родительских категорий
// не обязательные
'depth'              => 2,  // 0 - выводит все, 2 - не выводит третью вложенность

);  
wp_list_categories($args);  
?>
Метки:

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Убрать ссылки с родительской категории"