Реализация пользовательского виджета рубрик

Случается такое, что верстка блока рубрик отличается от той, что формирует нам WordPress, сейчас будем это исправлять

  • eye 89
  • 0

Прежде всего, код стандартного виджета рубрик WordPress править ни в коем случае не нужно, но сам код оттуда возьмем.

Для начала создадим файл categories-widget.php и подключим его в functions.php. В файл categories-widget.php скопируем весь код из файла /wordpress/wp-includes/widgets/class-wp-widget-categories.php, и обязательно переименуйте класс, например в Categories_widget.

Дальше, нам нужно в public function widget() (функция отвечающая за рендер самого виджета в шаблоне) реализовать необходимую нам разметку виджета. Обратите внимание, что там 2 варианта отображения: списком (ul) и выпадающим списком (select), поэтому править необходимо нужный вам блок кода: первый блок это выпадающий список, ниже по коду — обычный список, его править и будем.

Итак, что в итоге получилось в public function widget() для обычного списка:

echo('<div class="page-blog__desktop-cat">'); // Выводим обёртку блока

echo('<ul class="sidebar__cat">'); // Начало списка

$categories = get_categories( $cat_args ); // Получаем список категорий основываясь на данных переданных из админки
if( $categories ){ // если категории такие есть, то начинаем их перебирать в цикле

	foreach( $categories as $cat ){
                // return_current_URL() это пользовательская функция, возвращает текущий URL, использую для подсветки на странице текущей страницы
		$active_page = (return_current_URL() === get_category_link( $cat->term_id )) ? ' class="active"' : '';
                // собственно сам вывод рубрики
		echo('<li '. $active_page . ' >
				<a href="'.get_category_link( $cat->term_id ).'">
					'.$cat->name.' <span>'.$cat->count.	'</span>
				</a>
			</li>');

	}
}

Дальше, необходимо зарегистрировать новый виджет в системе:

add_action( 'widgets_init', 'Categories_widget' );
function Categories_widget() {
        // а для того, чтобы не было путаницы с виджетами убираем для начала регистрацию стандартного виджета 
	unregister_widget( 'WP_Widget_Categories_tursearch' );
        //Регистрируем наш
	register_widget( 'Categories_widget' );
}
comments powered by HyperComments

Поделиться

На вашу почту будет отправлена одноразовая ссылка на портфолио

Отправлено!

Что-то пошло не так... Попробуйте отправить позже