source

워드프레스 위젯을 프로그래밍 방식으로 표시하는 방법

gigabyte 2023. 3. 20. 23:16
반응형

워드프레스 위젯을 프로그래밍 방식으로 표시하는 방법

커스텀 페이지 기반 커스텀 페이지 템플릿에 커스텀 메이드 위젯을 프로그래밍 방식으로 표시해야 합니다.

다음은 시나리오입니다.

"product"라는 사용자 지정 페이지 템플릿을 기반으로 페이지를 작성했습니다. 이제 사이드바 디스플레이에 사용자 지정 위젯이 필요합니다.이 사이드바는 다른 페이지와 완전히 달라야 하기 때문에 프로그래밍 방식으로 표시하고 싶습니다._widget() 함수를 사용하려고 했는데, 내장된 위젯에서만 작동하는 것 같고, register_sidebar 함수에 등록된 파라미터는 기본적으로 사용하지 않는 것 같아서 전달 방법을 모르겠습니다.

실제로 사용한 것은 the_widget(')입니다.WP_Widget_Search')에서 테스트하고 위젯이 있었지만 테마 설정, 즉 기능 설정을 무시했습니다.php :

register_sidebar( array(
    'name' => 'Sidebar',
    'before_widget' => '<div id="%1$s" class="widget %2$s">',
    'after_widget' => '</div></div>',
    'before_title' => '<h3>',
    'after_title' => '</h3><div class="padder">'
) );

말씀드린 바와 같이 커스텀 메이드 위젯(플러그인 작성)에서 동작하는지는 알 수 없습니다.왜냐하면 위젯 이름과 파라미터를 전달할 수 없기 때문입니다.어떻게 하는 거야?

다음을 사용하여 위젯의 동적 인스턴스 작성the_widget()(예:

<div id="xxx" class="widget-area" role="complementary">
    <div id="sidebar-dyn">
        <?php the_widget( 'WP_Widget_Recent_Posts' ); ?>
    </div>
</div>

사용자 지정 위젯을 프로그래밍 방식으로 포함해야 하는 이유즉, 커스텀 페이지 템플릿 "product"에만 표시되는 다른 사이드바를 간단하게 작성할 수 있습니다.

게다가 커스텀 페이지에 대해서 이 조작을 실시할 필요가 있기 때문에, 상태를 확인할 필요도 없습니다.이 코드를 임의의 장소(사이드바를 표시하고 싶은 장소)의 페이지 템플릿 파일에 넣기만 하면 됩니다.

<?php if (function_exists('dynamic_sidebar') && dynamic_sidebar('Product Sidebar')) ;?>

위젯을 관리 패널에서 이 사이드바에 끌어다 놓기만 하면 됩니다.

위젯에 쇼트 코드가 있는 경우 다음을 사용하여 호출합니다.

<?php echo do_shortcode( $content ) ?>

질문하신 내용은 잘 모르겠습니다만, 제가 수집하는 것은 1. 위젯을 등록해야 하고 2. 제품 페이지에만 표시되어야 한다는 것입니다.

등록하려면 , 이것을 functions.filents.filents 에 배치합니다(함수 파일에 첫 번째 행이 이미 있을 수 있습니다).

<?php
if ( function_exists('register_sidebar') )
register_sidebar(array(
'name'=> 'Product Sidebar',
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div></div>',
'before_title' => '<h3>',
'after_title' => '</h3><div class="padder">'
));
?>

사이드바에 포함할 코드입니다.php: "Product"라는 페이지에만 위 내용을 표시합니다.

<?php if (is_page('Product')) ;?>
<?php if (function_exists('dynamic_sidebar') && dynamic_sidebar('Product Sidebar')) ;?>
<?php endif; ?>

언급URL : https://stackoverflow.com/questions/6228043/how-to-display-my-wordpress-widget-programmatically

반응형