wordpressor
  • 0
Эксперт

Показать названия всех боковых панелей?

  • 0

Я перечисляю все боковые панели следующим образом:

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>

WordPress Codex вообще бесполезен.

Спасибо!

Share
  1. Где именно вы перечисляете боковые панели и для какой цели это служит?

    • 0
  2. Цикл через глобальный:

    <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() предназначена только для отображения именно так, как вы просили. Не уверен, что ты действительно этого хочешь.


    Как получить доступ к глобальным массивам и объектам:

    В любом случае: ваш вопрос в основном касается доступа к массивам. Я написал вопрос об этом (для дальнейшего объяснения). Пожалуйста, взгляните сюда.

    • 0
  3. Написать функцию для создания списка для вас?

    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 );
    

    Надеюсь, это поможет.

    • 0

Оставить ответ

You must login to add an answer.