วิธีสร้างวิดเจ็ตหลายตัวใน WordPress โดยใช้ For & Foreach Loops

เผยแพร่แล้ว: 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="widget %2$s">',
     'after_widget' => '</section>',
     'before_title' => '<h2 class="widget-title">',
     'after_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 endif; ?>

การสร้างแถบด้านข้างวิดเจ็ตหลายอันใน WordPress

เนื่องจากโค้ดสำหรับ register sidebar ใช้ฟังก์ชัน 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="widget %2$s">',
      'after_widget' => '</section>',
      'before_title' => '<h2 class="widget-title">',
      'after_title' => '</h2>',
  )
);

//ลงทะเบียนแถบด้านข้าง #2

register_sidebar (
   อาร์เรย์ (
       'ชื่อ' => __( 'Njengah แถบด้านข้าง 2', 'โดเมนข้อความ' ),
        '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 แถบด้านข้าง 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');

คุณสามารถสร้างพื้นที่วิดเจ็ตได้มากขึ้นเรื่อย ๆ โดยทำซ้ำรหัสนี้ที่คุณใช้เพื่อลงทะเบียนวิดเจ็ตและทุกอย่างทำงานได้ดี

แต่เดี๋ยวก่อน! คุณไม่เคยได้ยินเกี่ยวกับกฎพื้นฐานหรือการเขียนโปรแกรมหนึ่งข้อ – DRY (อย่าทำซ้ำตัวเอง) หรือไม่?

นี่เป็นหลักการง่ายๆ ที่หมายความว่าโค้ดของคุณควรมีประสิทธิภาพและควรหลีกเลี่ยงการทำซ้ำเพื่อหลีกเลี่ยงความซ้ำซ้อน เราสามารถแทนที่โค้ดนี้ด้วยสิ่งที่ดีกว่าได้ ตัวอย่างเช่น เราสามารถส่งอาร์กิวเมนต์ไปยังฟังก์ชัน register_sidebar() เพื่อทำสิ่งนี้สามครั้ง

สร้างวิดเจ็ตหลายรายการใน WordPress ด้วยอาร์กิวเมนต์

เราสามารถบรรลุเป้าหมายในการสร้างวิดเจ็ตหลายรายการใน WordPress โดยแก้ไขฟังก์ชัน register_sidebar() โดยส่งอาร์เรย์อาร์กิวเมนต์เป็นพารามิเตอร์ที่สอง และพารามิเตอร์แรกคือจำนวนวิดเจ็ตที่เราต้องการสร้าง ในกรณีนี้ เราสามารถแก้ไขโค้ดที่แชร์ด้านบนนี้:

 ฟังก์ชั่น create_multiple_sidebar_widgets () {

$args = อาร์เรย์ (
    'name' => 'Njengah แถบด้านข้าง %d',
    'id' => 'njengah-แถบด้านข้าง',
    'description' => 'หนึ่งในแถบด้านข้างของบทช่วยสอนของ Njengah',
    'คลาส' => '',
    '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 แต่ก็ยังไม่ใช่ทางออกที่ดีที่สุด เราสามารถไปข้างหน้าและปรับปรุงมันตามที่ฉันจะแสดงให้เห็นในไม่ช้า

สร้างแถบด้านข้างหลายอันด้วย Array ใน WordPress

วิธีแก้ปัญหาข้างต้นไม่ได้ผลมากนัก เนื่องจากชื่อและคำอธิบายจำกัดเฉพาะรายการที่คุณกำหนดในฟังก์ชัน register_sidebar () เท่านั้น

เพื่อทำให้โซลูชันนี้ดีขึ้น เราสามารถแนะนำอาร์เรย์ที่มีชื่อ รหัส และคำอธิบาย จากนั้นเราใช้ foreach loop เพื่อลงทะเบียนแถบด้านข้าง

ต่อไปนี้คือตัวอย่างการสร้างวิดเจ็ตหลายรายการโดยใช้อาร์เรย์และลูป foreach:

 ฟังก์ชั่น create_multiple_sidebar_widgets () {

$njengah_sidebars = อาร์เรย์ (
  อาร์เรย์ (
     'name' => 'หน้าแรกของพื้นที่วิดเจ็ต',
     'id' => 'วิดเจ็ตพื้นที่หน้าแรก',
     'description' => 'วิดเจ็ตที่แสดงในหน้าแรก',
  ),
  อาร์เรย์ (
      'name' => 'วิดเจ็ตพื้นที่ส่วนหัว ',
     'id' => 'วิดเจ็ตพื้นที่ส่วนหัว',
     'description' => 'วิดเจ็ตที่แสดงในส่วนหัว',
  ),
  อาร์เรย์ (
     'name' => 'วิดเจ็ตพื้นที่ส่วนท้าย',
     'id' => 'วิดเจ็ตพื้นที่ส่วนท้าย',
     'description' => 'วิดเจ็ตที่แสดงในส่วนท้าย',
   ),
  );

   $ค่าเริ่มต้น = อาร์เรย์ (
      'name' => 'Njengah แถบด้านข้าง',
      '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 เป็น $sidebar ) {

    $args = wp_parse_args( แถบด้านข้าง $, $defaults );

    register_sidebar( $args );
   }

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

โซลูชันนี้ช่วยให้คุณสร้างวิดเจ็ตหลายรายการได้ในอนาคต เนื่องจากคุณเพียงแค่ต้องเพิ่มรายละเอียดวิดเจ็ตใหม่ทุกรายการ (ชื่อ รหัส และคำอธิบาย) ลงในอาร์เรย์ และวิดเจ็ตจะถูกสร้างขึ้นทันที

สร้างวิดเจ็ตส่วนท้ายที่คล้ายกันหลายรายการใน WordPress

ท้ายที่สุด นี่เป็นวิธีที่ดีที่สุดในการสร้างวิดเจ็ตหลายรายการใน WordPress แม้ว่าตัวเลือกที่สองจะมีประโยชน์เมื่อคุณต้องการวิดเจ็ตที่คล้ายกันหลายรายการ

ตัวอย่างเช่น เมื่อคุณต้องการสร้างวิดเจ็ตส่วนท้ายหลายอัน คุณสามารถใช้ for loop ได้ง่ายขึ้นดังนี้:

 /**
* ลงทะเบียนพื้นที่วิดเจ็ตโดยใช้ for loop
*
* @ผู้เขียน Joe Njenga
*/

ฟังก์ชัน njengah_register_sidebars_dynamically () {

    สำหรับ ( $i = 1, $n = 5; $i <= $n; $i++ ) {

       register_sidebar (

         อาร์เรย์ (
               'name' => esc_html__( 'Footer Area #', 'textdomain' ) $i,
               'id' => 'footer-' $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 loop นั้นนับถึง 5 และสร้างวิดเจ็ต 5 อัน คุณสามารถเปลี่ยนตัวเลขเป็นจำนวนวิดเจ็ตอื่น ๆ ที่คุณต้องการและวิดเจ็ตหลายอันจะถูกสร้างขึ้น แบบไดนามิกได้ทันที

ห่อ

เราได้กล่าวถึงสามวิธีที่แตกต่างกันในการสร้างวิดเจ็ตหลายอันใน WordPress และฉันหวังว่านี่เป็นเพียงจุดเริ่มต้นที่จะเป็นแรงผลักดันให้คุณสร้างวิธีการใหม่ ๆ ในการสร้างแถบด้านข้างแบบไดนามิกหลายอันหรือวิดเจ็ตหลายรายการในธีมและปลั๊กอินของ WordPress สุดท้ายนี้ เป็นสิ่งสำคัญสำหรับนักพัฒนา WordPress ทุกคนในการเรียนรู้วิธีใช้หลักการ DRY เนื่องจากไม่เพียงช่วยประหยัดเวลา แต่ยังช่วยปรับปรุงประสิทธิภาพของโค้ดอีกด้วย