For&Foreachループを使用してWordPressで複数のウィジェットを作成する方法

公開: 2020-01-25

WordPressで複数のウィジェットを作成する方法 コードを書きすぎずにWordPressで複数のウィジェットを作成する動的な方法をお探しですか? または、ダッシュボードからサイドバーを作成したり、複数のウィジェットを作成したりできるWordPressテーマを見たことがありますか?

前のチュートリアルでは、WordPressでサイドバーを追加する方法を詳しく説明しました。 今日、このクイックチュートリアルでは、WordPressで複数のウィジェットをその場で作成するための簡単なソリューションを紹介します。 これはあなたの時間を節約するだけでなく、あなたが忙しいプロのWordPress開発者である場合は特に、複数のプロジェクトでトリックを再利用するでしょう。

複数のWordPressサイドバーを作成するためのループ

理想的には、ある種のループを使用して複数のWordPressサイドバーを作成する関数を使用する必要があります。 最初のテーマまたはプラグイン用にこのコードを作成すると、より多くのテーマおよびプラグインの開発で再利用できます。

この関数は、テーマまたはWordPressプラグインで使用される動的サイドバージェネレーターを構築するための基礎にもなります。 このコードがどのように機能するかを完全に理解するには、その投稿で徹底的に説明したように、WordPressサイドバーを作成するプロセスに精通している必要があります。

WordPressウィジェットの作成

WordPressウィジェットは、ユーザーがWebサイトのさまざまなセクションに新しいコンテンツを表示できるようにする上で重要な役割を果たします。 WordPressでウィジェットエリアを作成する方法についてのこの投稿では; 重要なヒントとコードを共有し、WordPressでサイドバーを追加する方法についてこの投稿で非常に明確に説明しました。

WordPressテーマにウィジェットを追加できる場合は、サイトのすべてのセクションに新しい機能を追加できるので、驚くべきことです。

WordPressにサイドバーまたはウィジェット領域を追加する方法を簡単に確認するには、以下のコードをfunctions.phpに追加して、WordPressテーマにウィジェットを追加するときの最初のステップとしてサイドバーを登録する必要があります。

 / **
*ウィジェットエリアを登録します。
* /

関数njengah_create_one_widget_tutorial(){

//サイドバー関数を登録します-https://developer.wordpress.org/reference/functions/register_sidebar/

register_sidebar(

  配列(
     'name' => __( 'Njengah Widget Example'、 'textdomain')、
     'id' => 'サイドバー-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サイトに1つのウィジェットを追加するために使用しているregister_sidebar()関数であり、次のようにdynamic_sidebar()関数を使用してウィジェットをそれぞれのページテンプレートに表示できるようになりました。

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

    <ul id = "sidebar">

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

    </ ul>

<?php endif; ?>

WordPressで複数のウィジェットサイドバーを作成する

サイドバーを登録するコードはregister_sidebar()関数を使用してさらにサイドバーを作成したため、必要に応じてそのコードを数回繰り返す必要があります。これで、次のようにこのコードを繰り返すことで3つのサイドバーを作成できます。

 / **
* 3つのウィジェット領域を登録します。
* /

関数njengah_create_three_widget_tutorial(){

//サイドバー#1を登録します

register_sidebar(
   配列(
       'name' => __( 'Njengah Sidebar 1'、 'textdomain')、
       'id' => 'サイドバー-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を登録します

register_sidebar(
   配列(
       'name' => __( 'Njengah Sidebar 2'、 'textdomain')、
        'id' => 'サイドバー-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を登録します

register_sidebar(
   配列(
       'name' => __( 'Njengah Sidebar 3'、 'textdomain')、
       'id' => 'サイドバー-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');

ウィジェットの登録に使用しているこのコードを繰り返すことで、ウィジェット領域をどんどん作成できます。すべてが機能し、すばらしいです。

しかし、ちょっと待ってください! 1つの基本的なルールまたはプログラミングについて聞いたことがありません-DRY(Do n't Repeat Yourself)?

これは単純な原則であり、コードが効率的であり、冗長性を回避するためにそのような繰り返しを回避する必要があることを意味します。 このコードをより良いものに置き換えることができます。たとえば、register_sidebar()関数に引数を渡して3回実行できます。

引数を使用してWordPressで複数のウィジェットを作成する

2番目のパラメーターとして引数の配列を渡すことでregister_sidebar()関数を変更することで、WordPressで複数のウィジェットを作成するという目標を達成できます。最初のパラメーターは、作成するウィジェットの数です。 この場合、上記で共有したコードを次のように変更できます。

 function create_multiple_sidebar_widgets(){

$ args = array(
    'name' => 'Njengah Sidebar%d'、
    'id' => 'njengah-サイドバー'、
    'description' => 'Njengahチュートリアルサイドバーの1つ'、
    'クラス' => ''、
    'before_widget' => '<li id = "%1 $ s" class = "widget%2 $ s">'、
    'after_widget' => '</ li>'、
    'before_title' => '<h2 class = "widgettitle">'、
    'after_title' => '</ h2>'
 );

  register_sidebar(3、$ args);

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

名前の値にはプレースホルダー%dがあり、1、2、3の数字でサイドバーを表示できます。

これはWordPressで複数のウィジェットを作成するための迅速なソリューションですが、それでも究極のソリューションではありません。 すぐに説明しますので、先に進んで改善することができます。

WordPressで配列を使用して複数のサイドバーを作成する

タイトルと説明はregister_sidebar()関数で割り当てたものだけに制限されているため、上記の解決策はあまり効果的ではありません。

このソリューションを改善するために、名前、ID、説明を含む配列を導入してから、foreachループを使用してサイドバーを登録します。

以下は、配列とforeachループを使用して複数のウィジェットを作成する例です。

 function create_multiple_sidebar_widgets(){

$ njengah_sidebars = array(
  配列(
     'name' => 'ウィジェットエリアのホームページ'、
     'id' => 'widget-area-homepage'、
     'description' => 'ホームページに表示されるウィジェット'、
  )、
  配列(
      'name' => 'ウィジェット領域ヘッダー'、
     'id' => 'widget-area-header'、
     'description' => 'ヘッダーに表示されるウィジェット'、
  )、
  配列(
     'name' => 'ウィジェットエリアフッター'、
     'id' => 'widget-area-footer'、
     'description' => 'フッターに表示されるウィジェット'、
   )、
  );

   $ defaults = array(
      'name' => 'Njengah Sidebar'、
      'id' => 'njengah-サイドバー'、
      '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 as $ sidebar){

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

    register_sidebar($ args);
   }

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

このソリューションでは、すべての新しいウィジェットの詳細(名前、ID、説明)を配列に追加するだけで、ウィジェットがその場で作成されるため、将来的に複数のウィジェットを作成することができます。

WordPressで複数の同様のフッターウィジェットを作成する

最終的に、これはWordPressで複数のウィジェットを作成するための最良のアプローチですが、2番目のオプションは、複数の同様のウィジェットが必要な場合にも役立ちます。

たとえば、複数のフッターウィジェットを作成する場合は、次のようにforループを使用する方が簡単です。

 / **
* forループを使用してウィジェット領域を登録する
*
* @author Joe Njenga
* /

関数njengah_register_sidebars_dynamically(){

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

       register_sidebar(

         配列(
               '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で複数のウィジェットを作成するための最も便利なソリューションの1つだと思います。これは、forループが5にカウントされ、5つのウィジェットを作成するため、他の任意の数のウィジェットに変更するだけで、複数のウィジェットが生成されるためです。その場で動的に。

まとめ

WordPressで複数のウィジェットを作成する3つの異なる方法について説明しました。これが、WordPressのテーマとプラグインで複数の動的サイドバーまたは複数のウィジェットを作成するより革新的な方法を作成するきっかけとなることを願っています。 最後に、すべてのWordPress開発者にとって、DRYの原則を利用する方法を学ぶことが重要です。これは、時間を節約するだけでなく、コードの効率を向上させるためです。