Как создать несколько виджетов в WordPress с помощью циклов For и Foreach

Опубликовано: 2020-01-25

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