Как создать несколько виджетов в WordPress с помощью циклов For и Foreach
Опубликовано: 2020-01-25
Вы ищете динамичный способ создания нескольких виджетов в WordPress без написания слишком большого количества кода? Или вы видели тему WordPress, которая позволяет вам создать боковую панель или создать несколько виджетов на панели инструментов?
В предыдущем уроке я подробно объяснил, как добавить боковую панель в WordPress . Сегодня в этом кратком руководстве я поделюсь с вами быстрым решением для создания нескольких виджетов в WordPress на лету. Это не только сэкономит ваше время, но и позволит повторно использовать этот трюк в нескольких проектах, особенно если вы занятый профессиональный разработчик WordPress.
Цикл создания нескольких боковых панелей WordPress
В идеале мы хотим использовать функцию, которая создает несколько боковых панелей WordPress, используя своего рода цикл . Когда вы создаете этот код для первой темы или плагина, вы собираетесь повторно использовать его при разработке других тем и плагинов.
Эта функция также может быть основой для создания динамического генератора боковой панели, используемого в теме или плагине WordPress. Чтобы вы полностью поняли, как работает этот код, вам нужно быть знакомым с процессом создания боковой панели WordPress , как я подробно объяснил в этом посте.
Создание виджетов WordPress
Виджеты WordPress играют решающую роль, помогая пользователям отображать новый контент в разных разделах своего веб-сайта. В этом посте о том, как создавать области виджетов в WordPress ; Я поделился важными советами и кодом, а также очень четко объяснил в этом посте, как добавить боковую панель в WordPress .
Когда у вас есть возможность добавить виджет в тему WordPress, это просто потрясающе, поскольку вы можете добавить любую новую функцию во все разделы вашего сайта.
Для быстрого ознакомления с тем, как добавить боковую панель или область виджетов в WordPress, следует добавить следующий код в functions.php, чтобы зарегистрировать боковую панель в качестве первого шага при добавлении виджета в вашу тему WordPress:
/**
* Зарегистрируйте область виджета.
*/
функция njengah_create_one_widget_tutorial() {
//Функция регистрации боковой панели — https://developer.wordpress.org/reference/functions/register_sidebar/
register_sidebar(
множество(
'name' => __('Пример виджета Njengah', 'textdomain'),
'id' => 'сайдбар-1',
'description' => __('Добавьте сюда виджеты, чтобы они отображались на боковой панели.', 'textdomain'),
'before_widget' => '<section id="%1$s" class="виджет %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'после_названия' => '</h2>',
)
);
}
add_action('widgets_init', 'njengah_create_one_widget_tutorial');Это функция register_sidebar(), которую мы используем для добавления одного виджета на сайт WordPress, и теперь виджет может отображаться в соответствующем шаблоне страницы с помощью функции dynamic_sidebar() следующим образом:
<?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
<ul ID="сайдбар">
<?php dynamic_sidebar('sidebar-1'); ?>
</ul>
<?php конец; ?>Создание нескольких боковых панелей виджетов в WordPress
Поскольку код для регистрации боковой панели использует функцию register_sidebar() для создания большего количества боковых панелей, вам просто нужно повторить этот код несколько раз по вашему желанию: Теперь мы можем создать три боковые панели, повторив этот код следующим образом:
/**
* Зарегистрируйте 3 области виджетов.
*/
функция njengah_create_three_widget_tutorial() {
//Регистрация боковой панели №1
register_sidebar(
множество(
'name' => __('Боковая панель Njengah 1', 'textdomain'),
'id' => 'сайдбар-1',
'description' => __( 'Добавьте сюда виджеты, чтобы они отображались на боковой панели 1.', 'textdomain' ),
'before_widget' => '<section id="%1$s" class="виджет %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'после_названия' => '</h2>',
)
);
//Регистрация боковой панели №2
register_sidebar(
множество(
'name' => __('Боковая панель Njengah 2', 'textdomain'),
'id' => 'сайдбар-2',
'description' => __( 'Добавьте сюда виджеты, чтобы они отображались на боковой панели 2.', 'textdomain' ),
'before_widget' => '<section id="%1$s" class="виджет %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'после_названия' => '</h2>',
)
);
//Регистрация боковой панели №3
register_sidebar(
множество(
'name' => __('Боковая панель Njengah 3', 'textdomain'),
'id' => 'сайдбар-3',
'description' => __( 'Добавьте сюда виджеты, чтобы они отображались на боковой панели 3.', 'textdomain' ),
'before_widget' => '<section id="%1$s" class="виджет %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'после_названия' => '</h2>',
)
);
}
add_action('widgets_init', 'njengah_create_three_widget_tutorial');Вы можете создавать все больше и больше областей виджетов, повторяя этот код, который вы используете для регистрации виджетов, и все работает, и это здорово.

Но подождите минутку! Разве вы не слышали об одном фундаментальном правиле программирования – DRY (не повторяйтесь)?
Это простой принцип, который означает, что ваш код должен быть эффективным и избегать повторений, чтобы избежать избыточности. Мы можем заменить этот код на что-нибудь получше, например, мы можем передать аргумент функции register_sidebar(), чтобы она сделала это три раза.
Создайте несколько виджетов в WordPress с аргументом
Мы можем достичь нашей цели по созданию нескольких виджетов в WordPress, изменив функцию register_sidebar(), передав массив аргументов в качестве второго параметра, а первый параметр — это количество виджетов, которые мы хотим создать. В этом случае мы можем изменить приведенный выше код следующим образом:
функция create_multiple_sidebar_widgets() {
$аргументы = массив(
'name' => 'Боковая панель Njengah %d',
'id' => 'njengah-sidebar',
'description' => 'Одна из боковых панелей учебника Njengah',
'класс' => '',
'before_widget' => '<li id="%1$s" class="виджет %2$s">',
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'после_названия' => '</h2>'
);
register_sidebar(3, $args);
}
add_action('widgets_init', 'create_multiple_sidebar_widgets');Значение имени имеет заполнитель %d, который просто позволяет нам отображать боковые панели с номерами 1,2 и 3.
Это быстрое решение для создания нескольких виджетов в WordPress, но все же это не окончательное решение. Мы можем пойти дальше и улучшить его, как я скоро продемонстрирую.
Создайте несколько боковых панелей с массивом в WordPress
Приведенное выше решение не очень эффективно, так как заголовок и описание ограничиваются только теми, которые вы назначаете в функции register_sidebar().
Чтобы сделать это решение лучше, мы можем ввести массив с именами, идентификаторами и описаниями, а затем использовать цикл foreach для регистрации боковых панелей.
Ниже приведен пример создания нескольких виджетов с использованием массива и цикла foreach:
функция create_multiple_sidebar_widgets() {
$njengah_sidebars = массив(
множество(
'name' => 'Домашняя страница области виджетов',
'id' => 'домашняя страница области виджетов',
'description' => 'Виджеты, отображаемые на главной странице',
),
множество(
'name' => 'Заголовок области виджета',
'id' => 'заголовок области виджета',
'description' => 'Виджеты отображаются в шапке',
),
множество(
'name' => 'Нижний колонтитул области виджета',
'id' => 'нижний колонтитул области виджета',
'description' => 'Виджеты в нижнем колонтитуле',
),
);
$ по умолчанию = массив (
'name' => 'Боковая панель Njengah',
'id' => 'njengah-sidebar',
'description' => 'Боковая панель по умолчанию отображается слева на страницах блога в этой теме',
'класс' => '',
'before_widget' => '<li id="%1$s" class="виджет %2$s">',
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'после_названия' => '</h2>'
);
foreach($njengah_sidebars as $sidebar) {
$args = wp_parse_args($sidebar, $defaults);
register_sidebar($args);
}
}
add_action('widgets_init', 'create_multiple_sidebar_widgets');Это решение дает вам возможность создавать несколько виджетов в будущем, поскольку вам просто нужно добавить каждую новую информацию о виджете (имя, идентификатор и описание) в массив, и виджет будет создан на лету.
Создайте несколько похожих виджетов нижнего колонтитула в WordPress
В конечном счете, это лучший подход к созданию нескольких виджетов в WordPress, хотя второй вариант также может пригодиться, когда вам нужно несколько одинаковых виджетов.
Например, если вы хотите создать несколько виджетов нижнего колонтитула, может быть проще использовать цикл for следующим образом:
/**
* Зарегистрируйте область виджета, используя цикл for
*
* @author Джо Нженга
*/
функция njengah_register_sidebars_dynamically () {
for ($i = 1, $n = 5; $i <= $n; $i++) {
register_sidebar(
множество(
'name' => esc_html__('Область нижнего колонтитула #', 'textdomain') . $ я,
'id' => 'нижний колонтитул-' . $ я,
'description' => sprintf( esc_html__( 'Столбец #%s в области нижнего колонтитула', 'textdomain' ), $i ),
'before_widget' => '<aside id="%1$s" class="виджет %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'после_названия' => '</h3>',
)
);
}
}
}
add_action('widgets_init', 'njengah_register_sidebars_dynamically');Я думаю, что это может быть одним из самых полезных решений для создания нескольких виджетов в WordPress, поскольку цикл for просто считает до 5 и создает 5 виджетов, вы можете просто изменить число на любое другое количество виджетов, которое вы хотите, и несколько виджетов будут сгенерированы. динамично на лету.
Подведение итогов
Мы рассмотрели три различных способа создания нескольких виджетов в WordPress, и я надеюсь, что это только начало, которое даст вам импульс для создания более инновационных способов создания нескольких динамических боковых панелей или нескольких виджетов в темах и плагинах WordPress. Наконец, каждому разработчику WordPress важно научиться использовать принцип DRY, поскольку он не только экономит время, но и повышает эффективность кода.
