如何使用 For & Foreach 循环在 WordPress 中创建多个小部件

已发表: 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/

注册边栏(

  大批(
     'name' => __('Njengah 小部件示例', 'textdomain' ),
     'id' => 'sidebar-1',
     'description' => __('在此处添加小部件以显示在您的侧边栏中。', 'textdomain' ),
     'before_widget' => '<section id="%1$s" class="widget %2$s">',
     'after_widget' => '</section>',
     'before_title' => '<h2 class="widget-title">',
     'after_title' => '</h2>',

   )

  );


}

add_action('widgets_init', 'njengah_create_one_widget_tutorial');

这是我们用来向 WordPress 站点添加一个小部件的 register_sidebar() 函数,现在可以使用 dynamic_sidebar() 函数将小部件显示在相应的页面模板中,如下所示:

 <?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>

    <ul id="边栏">

      <?php dynamic_sidebar('sidebar-1'); ?>

    </ul>

<?php endif; ?>

在 WordPress 中创建多个小部件侧边栏

由于注册侧边栏的代码使用 register_sidebar() 函数来创建更多侧边栏,您只需根据需要重复该代码几次:现在我们可以通过重复此代码来创建三个侧边栏,如下所示:

 /**
* 注册 3 个小部件区域。
*/

功能 njengah_create_three_widget_tutorial() {

//注册侧边栏#1

注册边栏(
   大批(
       'name' => __('Njengah Sidebar 1', 'textdomain'),
       'id' => 'sidebar-1',
      'description' => __( '在此处添加小部件以显示在侧边栏 1.', 'textdomain' ),
      'before_widget' => '<section id="%1$s" class="widget %2$s">',
      'after_widget' => '</section>',
      'before_title' => '<h2 class="widget-title">',
      'after_title' => '</h2>',
  )
);

//注册侧边栏#2

注册边栏(
   大批(
       'name' => __( 'Njengah Sidebar 2', 'textdomain' ),
        'id' => 'sidebar-2',
        'description' => __( '在此处添加小部件以显示在您的侧边栏 2.', 'textdomain' ),
        'before_widget' => '<section id="%1$s" class="widget %2$s">',
        'after_widget' => '</section>',
        'before_title' => '<h2 class="widget-title">',
       'after_title' => '</h2>',
     )
);

//注册侧边栏#3

注册边栏(
   大批(
       'name' => __('Njengah Sidebar 3', 'textdomain'),
       'id' => 'sidebar-3',
       'description' => __( '在此处添加小部件以显示在您的侧边栏 3.', 'textdomain' ),
       'before_widget' => '<section id="%1$s" class="widget %2$s">',
       'after_widget' => '</section>',
       'before_title' => '<h2 class="widget-title">',
       'after_title' => '</h2>',
      )
   );

}
add_action('widgets_init', 'njengah_create_three_widget_tutorial');

您可以通过重复用于注册小部件的代码来创建越来越多的小部件区域,一切正常,这很酷。

但是等一下! 你有没有听说过一个基本规则或编程——DRY(不要重复自己)?

这是一个简单的原则,这意味着您的代码应该是高效的,并且应该避免这种重复以避免冗余。 我们可以用更好的代码替换这段代码,例如,我们可以将一个参数传递给 register_sidebar() 函数来执行 3 次。

使用参数在 WordPress 中创建多个小部件

我们可以通过将参数数组作为第二个参数传递给 register_sidebar() 函数来实现在 WordPress 中创建多个小部件的目标,第一个参数是我们想要创建的小部件的数量。 在这种情况下,我们可以将上面共享的代码更改为:

 功能 create_multiple_sidebar_widgets() {

$args = 数组(
    'name' => 'Njengah 侧边栏 %d',
    'id' => 'njengah-sidebar',
    'description' => 'Njengah 教程边栏之一',
    '类' => '',
    'before_widget' => '<li id="%1$s" class="widget %2$s">',
    'after_widget' => '</li>',
    'before_title' => '<h2 class="widgettitle">',
    'after_title' => '</h2>'
 );

  注册边栏(3,$args);

}
add_action('widgets_init', 'create_multiple_sidebar_widgets');

名称值有一个占位符 %d,它只允许我们显示带有数字 1,2 和 3 的侧边栏。

这是在 WordPress 中创建多个小部件的快速解决方案,但它仍然不是最终解决方案。 我们可以继续改进它,我稍后会演示。

在 WordPress 中使用数组创建多个侧边栏

上面的解决方案不是很有效,因为标题和描述仅限于您在 register_sidebar () 函数中指定的内容。

为了使这个解决方案更好,我们可以引入一个包含名称、ID 和描述的数组,然后我们使用 foreach 循环来注册侧边栏。

以下是使用数组和 foreach 循环创建多个小部件的示例:

 功能 create_multiple_sidebar_widgets() {

$njengah_sidebars = 数组(
  大批(
     'name' => '小部件区域主页',
     'id' => 'widget-area-homepage',
     'description' => '主页上显示的小部件',
  ),
  大批(
      'name' => '小部件区域标题',
     'id' => 'widget-area-header',
     'description' => '标题中显示的小部件',
  ),
  大批(
     'name' => '小部件区域页脚',
     'id' => 'widget-area-footer',
     'description' => '页脚中显示的小部件',
   ),
  );

   $默认值 = 数组(
      '名称' => 'Njengah 侧边栏',
      'id' => 'njengah-sidebar',
      'description' => '默认侧边栏显示在该主题的博客页面左侧',
       '类' => '',
      'before_widget' => '<li id="%1$s" class="widget %2$s">',
      'after_widget' => '</li>',
      'before_title' => '<h2 class="widgettitle">',
      'after_title' => '</h2>'
  );

  foreach( $njengah_sidebars 作为 $sidebar ) {

    $args = wp_parse_args($sidebar, $defaults);

    注册边栏($args);
   }

}
add_action('widgets_init', 'create_multiple_sidebar_widgets');

此解决方案使您能够在将来创建多个小部件,因为您只需将每个新的小部件详细信息(名称、id 和描述)添加到数组中,并且小部件是即时创建的。

在 WordPress 中创建多个类似的页脚小部件

最终,这是在 WordPress 中创建多个小部件的最佳方法,尽管当您需要多个类似的小部件时,第二个选项也可以派上用场。

例如,当您要创建多个页脚小部件时,可以更轻松地使用 for 循环,如下所示:

 /**
* 使用 for 循环注册小部件区域
*
* @作者乔恩杰加
*/

功能 njengah_register_sidebars_dynamically() {

    for ( $i = 1, $n = 5; $i <= $n; $i++ ) {

       注册边栏(

         大批(
               'name' => esc_html__('页脚区域#', 'textdomain') 。 $i,
               'id' => '页脚-' 。 $i,
               'description' => sprintf( esc_html__( '页脚区域的#%s 列', 'textdomain' ), $i ),
               'before_widget' => '<aside id="%1$s" class="widget %2$s">',
               'after_widget' => '</aside>',
               'before_title' => '<h3 class="widget-title">',
              'after_title' => '</h3>',
           )
        );
     }
   }
}
add_action('widgets_init', 'njengah_register_sidebars_dynamically');

我认为这可能是在 WordPress 中创建多个小部件的最有用的解决方案之一,因为 for 循环只是计数为 5 并创建 5 个小部件,您只需将数字更改为您想要的任何其他数量的小部件,就会生成多个小部件动态动态。

包起来

我们已经介绍了在 WordPress 中创建多个小部件的三种不同方法,我希望这只是一个开始,可以激励您在 WordPress 主题和插件中创建更多创新的方式来创建多个动态侧边栏或多个小部件。 最后,对于每个 WordPress 开发人员来说,学习如何利用 DRY 原则非常重要,因为它不仅可以节省时间,还可以提高代码效率。