Predaytor
@Predaytor
C# .NET Core, React, Typescript

Как добавить собственный класс списку sidebar wordpress?

Скажите мне, как может существовать прекрасный и полностью логичный ModX и этот кусок кривого кода. Возможно, я ошибаюсь, и данная система по своему чудесна как радужный пони. Но я не могу понять как мне создать виджет (вывод списка категорий) с собственными классами для списка? Почему здесь все настолько непонятно?
Мне нужна такая конструкция:
<div class="sidebar-tags">
	<span class="sidebar-tags-title">Categories</span>
	<ul class="sidebar-tags-list">
	    <li class="sidebar-tags-list-tag"><a href="#"><span>#</span>Communication</a></li>
	</ul>
</div>


Код виджета:
register_sidebar(array(
		'name'		 => __('Sidebar', 'daytor' ),
		'id'	         => 'daytor_sidebar',
		'description'        => __( 'Sibebar for the theme Daytor', 'daytor' ),
		'class'		 => '',
		'before_widget'      => '<div id="%1$s" class="sidebar-tags %2$s">',
		'after_widget'	 => '</div>',
		'before_title'	 => '<span class="sidebar-tags-title bg-primary">',
		'after_title'	 => '</span>'
	));


Что получается в итоге:
<div id="categories-3" class="sidebar-tags widget_categories">
	<span class="sidebar-tags-title bg-primary">Категории</span>
	<ul>
		<li class="cat-item cat-item-1"><a href="http://wordpress/c/code/">Code</a></li>
	</ul>
</div>
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
dimovich85
@dimovich85 Куратор тега CSS
https://u-academy.net/
Виджет выводится из стандартного виджета, либо свой делайте, либо правьте родной, но при обновлении слетит все, а еще можно поискать хуки на фильтры и обработать через фильтры. Я бы свой виджет сделал.
Создаете в папке с темой файл, название произвольное, наследуетесь от WP_Widget, далее по документации пишете код. В файле functions.php инклюдите один раз файл с виджетом, подписываетесь на хук widgets_init, и регистрируете свои виджеты: register_widget('my_widget');
Шаблонный код для виджета:
<?php 

class my_widget extends WP_Widget {

	public function __construct(){
		$args = array(
			'name' => 'My awesome widget',
			'description' => 'Виводить текст'
		);
		parent::__construct('my_widget', '', $args);
	}

	public function form($instance){
		
		?>
<!-- Верстка формы, которая в админке -->
	<p>
		<label for="<?php echo $this->get_field_id('text'); ?>">Текст:</label>
		<textarea type="text" name="<?php echo $this->get_field_name('text'); ?>" id="<?php echo $this->get_field_id('text'); ?>" value="<?php echo $instance['text']; ?>" class="widefat"><?php echo $instance['text']; ?></textarea>
	</p>
<!-- Конец верстки формы -->
<?php

	} //Конец метода form. Ниже верстка вывода на фронте внутренностей виджета

	public function widget($args, $instance){
		echo '<div class="myClass">' . $instance['text'] . '</div>';
	}

	/*public function update(){

	}*/




}


?>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы