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

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);  
?>
Метки:

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

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

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