모든 사이드 바 이름을 나열 하시겠습니까?


14

나는 모든 사이드 바를 다음과 같이 나열하고있다 :

global $wp_registered_sidebars;

echo '<pre>';
print_r($wp_registered_sidebars); 
echo '</pre>'

그래서 나는 다음과 같은 것을 얻고있다 :

Array
(
    [sidebar-1] => Array
        (
            [name] => Sidebar #1
            [id] => sidebar-1
            [description] => Sidebar number 1
            [before_widget] => 
            [after_widget] => 
            [before_title] => 
            [after_title] =>
        )

 (...)

)

그러나 다음과 같이 선택 목록으로 표시하고 싶습니다.

<select>
  <option value ="SIDEBAR-ID">SIDEBAR-NAME/option>
  <option value ="SIDEBAR-ID">SIDEBAR-NAME/option>
(...)
</select>

워드 프레스 코덱스는 전혀 도움이되지 않습니다.

감사합니다!


사이드 바를 어디에 정확히 나열하고 있으며 어떤 목적으로 사용됩니까?
카이저

답변:


23

글로벌 루프 :

<select>
<?php foreach ( $GLOBALS['wp_registered_sidebars'] as $sidebar ) { ?>
     <option value="<?php echo ucwords( $sidebar['id'] ); ?>">
              <?php echo ucwords( $sidebar['name'] ); ?>
     </option>
<?php } ?>
</select>

참고 :
ucwords()기능은 요청한대로 정확하게 표시하기위한 것입니다. 정말로 원하는지 확실하지 않습니다.


전역 배열 및 객체에 액세스하는 방법 :

어쨌든 : 귀하의 Q는 주로 배열에 액세스하는 방법에 관한 것입니다. 나는 그것에 대해 Q를 썼다 (추가 설명을 위해). 여기를 살펴보세요.


6

목록을 작성하는 기능을 작성 하시겠습니까?

function sidebar_selectbox( $name = '', $current_value = false ) {
    global $wp_registered_sidebars;

    if ( empty( $wp_registered_sidebars ) )
        return;

    $name = empty( $name ) ? false : ' name="' . esc_attr( $name ) . '"';
    $current = $current_value ? esc_attr( $current_value ) : false;     
    $selected = '';
    ?>
    <select<?php echo $name; ?>>
    <?php foreach ( $wp_registered_sidebars as $sidebar ) : ?>
        <?php 
        if ( $current ) 
            $selected = selected( $current === $sidebar['id'], true, false ); ?>    
        <option value="<?php echo $sidebar['id']; ?>"<?php echo $selected; ?>><?php echo $sidebar['name']; ?></option>
    <?php endforeach; ?>
    </select>
    <?php
}

그런 다음 사이드 바를 사용하여 선택 목록을 작성해야 할 때마다 선택적으로 이름을 전달하십시오.

sidebar_selectbox();

또는

sidebar_selectbox( 'theme_sidebars' );

또한 선택적으로 현재 선택된 값을 전달하십시오 ...

sidebar_selectbox( 'theme_sidebars', $var_holding_current );

희망이 도움이됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.