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' => '사이드바-1',
     'description' => __( '사이드바에 표시하려면 여기에 위젯을 추가하세요.', 'textdomain' ),
     'before_widget' => '<섹션 ID="%1$s" 클래스="위젯 %2$s">',
     'after_widget' => '</섹션>',
     '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( '사이드바-1' ); ?>

    </ul>

<?php endif; ?>

WordPress에서 여러 위젯 사이드바 만들기

사이드바를 등록하는 코드는 추가 사이드바를 만들기 위해 register_sidebar() 함수를 사용했으므로 원하는 대로 해당 코드를 여러 번 반복하면 됩니다. 이제 다음과 같이 이 코드를 반복하여 세 개의 사이드바를 만들 수 있습니다.

 /**
* 3개의 위젯 영역을 등록합니다.
*/

함수 njengah_create_three_widget_tutorial() {

// 사이드바 등록 #1

레지스터_사이드바(
   정렬(
       '이름' => __( '엔젠가 사이드바 1 ', '텍스트도메인' ),
       'id' => '사이드바-1',
      'description' => __( '사이드바 1에 표시하려면 여기에 위젯을 추가하세요.', 'textdomain' ),
      'before_widget' => '<섹션 ID="%1$s" 클래스="위젯 %2$s">',
      'after_widget' => '</섹션>',
      'before_title' => '<h2 class="widget-title">',
      'after_title' => '</h2>',
  )
);

//사이드바 #2 등록

레지스터_사이드바(
   정렬(
       '이름' => __( '엔젠가 사이드바 2', '텍스트도메인' ),
        'id' => '사이드바-2',
        'description' => __( '사이드바 2에 표시하려면 여기에 위젯을 추가하세요.', 'textdomain' ),
        'before_widget' => '<섹션 ID="%1$s" 클래스="위젯 %2$s">',
        'after_widget' => '</섹션>',
        'before_title' => '<h2 class="widget-title">',
       'after_title' => '</h2>',
     )
);

//사이드바 #3 등록

레지스터_사이드바(
   정렬(
       '이름' => __( '엔젠가 사이드바 3 ', '텍스트도메인' ),
       'id' => '사이드바-3',
       'description' => __( '사이드바 3에 표시하려면 여기에 위젯을 추가하세요.', 'textdomain' ),
       'before_widget' => '<섹션 ID="%1$s" 클래스="위젯 %2$s">',
       'after_widget' => '</섹션>',
       'before_title' => '<h2 class="widget-title">',
       'after_title' => '</h2>',
      )
   );

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

위젯을 등록하는 데 사용하는 이 코드를 반복하여 더 많은 위젯 영역을 만들 수 있으며 모든 것이 잘 작동합니다.

하지만 잠깐만! DRY(Don't Repeat Yourself)라는 기본 규칙이나 프로그래밍에 대해 들어본 적이 있습니까?

이것은 코드가 효율적이어야 하고 중복을 피하기 위해 이러한 반복을 피해야 함을 의미하는 간단한 원칙입니다. 이 코드를 더 나은 것으로 대체할 수 있습니다. 예를 들어, register_sidebar() 함수에 인수를 전달하여 이를 세 번 수행할 수 있습니다.

인수를 사용하여 WordPress에서 여러 위젯 만들기

두 번째 매개변수로 인수 배열을 전달하고 첫 번째 매개변수는 만들고자 하는 위젯 수를 전달하여 register_sidebar() 함수를 변경하여 WordPress에서 여러 위젯을 생성하려는 목표를 달성할 수 있습니다. 이 경우 위에서 공유한 코드를 다음과 같이 변경할 수 있습니다.

 함수 create_multiple_sidebar_widgets() {

$args = 배열(
    '이름' => 'Njengah 사이드바 %d',
    'id' => 'njengah-사이드바',
    'description' => 'Njengah 튜토리얼 사이드바 중 하나',
    '클래스' => '',
    'before_widget' => '<li id="%1$s" class="위젯 %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');

이름 값에는 숫자 1,2 및 3이 있는 사이드바를 표시할 수 있도록 하는 자리 표시자 %d이(가) 있습니다.

이것은 WordPress에서 여러 위젯을 만드는 빠른 솔루션이지만 여전히 궁극적인 솔루션은 아닙니다. 곧 보여드릴 것이므로 계속해서 개선할 수 있습니다.

WordPress에서 배열로 여러 사이드바 만들기

위의 솔루션은 제목과 설명이 register_sidebar() 함수에서 할당한 항목으로만 제한되어 있기 때문에 그다지 효과적이지 않습니다.

이 솔루션을 더 잘 만들기 위해 이름, ID 및 설명이 있는 배열을 도입한 다음 foreach 루프를 사용하여 사이드바를 등록할 수 있습니다.

다음은 배열과 foreach 루프를 사용하여 여러 위젯을 만드는 예입니다.

 함수 create_multiple_sidebar_widgets() {

$njengah_sidebars = 배열(
  정렬(
     '이름' => '위젯 영역 홈페이지',
     'id' => '위젯 영역-홈페이지',
     '설명' => '홈페이지에 표시되는 위젯',
  ),
  정렬(
      '이름' => '위젯 영역 헤더',
     'id' => '위젯 영역 헤더',
     '설명' => '헤더에 표시된 위젯',
  ),
  정렬(
     '이름' => '위젯 영역 바닥글',
     'id' => '위젯 영역 바닥글',
     '설명' => '바닥글에 표시되는 위젯',
   ),
  );

   $defaults = 배열(
      '이름' => '은젠가 사이드바',
      'id' => 'njengah-사이드바',
      'description' => '기본 사이드바는 이 테마의 블로그 페이지 왼쪽에 표시됩니다',
       '클래스' => '',
      'before_widget' => '<li id="%1$s" class="위젯 %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에서 여러 위젯을 만드는 가장 좋은 방법이지만 두 번째 옵션은 여러 유사한 위젯을 원할 때도 유용할 수 있습니다.

예를 들어 여러 개의 바닥글 위젯을 생성하려는 경우 다음과 같이 for 루프를 사용하는 것이 더 쉬울 수 있습니다.

 /**
* for 루프를 사용하여 위젯 영역 등록
*
* @저자 Joe Njenga
*/

기능 njengah_register_sidebars_dynamically() {

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

       레지스터_사이드바(

         정렬(
               'name' => esc_html__( '바닥글 영역 번호', 'textdomain' ) . $나,
               'id' => '바닥글-' . $나,
               '설명' => sprintf( esc_html__( '바닥글 영역의 #%s 열', 'textdomain' ), $i ),
               'before_widget' => '<aside id="%1$s" class="위젯 %2$s">',
               'after_widget' => '</aside>',
               'before_title' => '<h3 class="widget-title">',
              'after_title' => '</h3>',
           )
        );
     }
   }
}
add_action( 'widgets_init', 'njengah_register_sidebars_dynamically' );

for 루프는 단순히 5로 계산하고 5개의 위젯을 생성하기 때문에 이것이 WordPress에서 여러 위젯을 만드는 데 가장 유용한 솔루션 중 하나가 될 수 있다고 생각합니다. 원하는 위젯 수로 숫자를 변경하면 여러 위젯이 생성됩니다 즉석에서 동적으로.

마무리

우리는 WordPress에서 여러 위젯을 만드는 세 가지 다른 방법을 다루었으며 이것이 WordPress 테마 및 플러그인에서 여러 동적 사이드바 또는 여러 위젯을 만드는 보다 혁신적인 방법을 만드는 데 자극을 주는 시작에 불과하기를 바랍니다. 마지막으로 모든 WordPress 개발자는 DRY 원칙을 사용하는 방법을 배우는 것이 중요합니다. DRY 원칙은 시간을 절약할 뿐만 아니라 코드 효율성을 향상시키기 때문입니다.