Как создать несколько виджетов в 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, поскольку он не только экономит время, но и повышает эффективность кода.