Intereting Posts

Как вы перечислите все боковые панели в метабоксе

Я знаю, что на этот вопрос ответили много раз, включая сюда, откуда я пришел, поэтому это, вероятно, будет очень просто.

Я зарегистрировал свои боковые панели как обычно

function wmw_sidebars() { // Register default widgetized areas $sidebars = array( 'primary' => array( 'name' => __( 'Primary Widget Area', WMW_ADMIN_TEXTDOMAIN ), 'desc' => __( 'The primary widget area', WMW_ADMIN_TEXTDOMAIN ) ), 'home' => array( 'name' => __( 'Homepage Widget Area', WMW_ADMIN_TEXTDOMAIN ), 'desc' => __( 'The homepage widget area', WMW_ADMIN_TEXTDOMAIN ) ), ); foreach ( $sidebars as $type => $sidebar ){ register_sidebar(array( 'name' => $sidebar['name'], 'id'=> $type, 'description' => $sidebar['desc'], 'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<h4 class="widgettitle"><span>', 'after_title' => '</span></h4>', )); } } 

Я использую тот же CMB Metabox Class, что и fshequin, и обнаруживаю, что метамоксины появляются на моих сообщениях и страницах.

  $meta_boxes[] = array( 'id' => 'WMW_page_layout_meta', 'title' => __( 'Page Layout Options', WMW_ADMIN_TEXTDOMAIN ), 'pages' => get_post_types(), 'context' => 'side', 'priority' => 'default', 'show_names' => false, // Show field names on the left 'fields' => array( array( 'name' => __( 'Page Layout', WMW_ADMIN_TEXTDOMAIN ), 'desc' => __( 'You can choose between a left, right, or no sidebar layout for your page.', WMW_ADMIN_TEXTDOMAIN ), 'id' => '_layout', 'type' => 'select', 'options' => array( array('name' => 'Full Width (No Sidebar)', 'value' => 'full_width', ), array('name' => 'Sidebar on Left, Content on Right', 'value' => 'left_sidebar', ), array('name' => 'Sidebar on Right, Content on Left', 'value' => 'right_sidebar',) ) ), array( 'name' => __( 'Page Sidebar', WMW_ADMIN_TEXTDOMAIN ), 'desc' => __( 'Choose the Sidebar to show on this page.', WMW_ADMIN_TEXTDOMAIN ), 'id' => '_page_sidebar', 'type' => 'select', 'options' => $sidebar_options ) ) ); 

Но по какой-то причине я не могу получить варианты выбора.

I Помещенный массив в тот же файл функций, что и регистрация боковых панелей, но не в функции.

 $sidebars = $GLOBALS['wp_registered_sidebars']; foreach ( $sidebars as $sidebar ){ $sidebar_options[] = array( 'name' => $sidebar['name'], 'value' => $sidebar['id'] ); } $sidebar_options = array(); 

Что бы я ни старался, этого не происходит, я изменил имена переменных, чтобы избежать конфликта с массивом регистров боковой панели, но без кубиков.

Любая помощь приветствуется!

———————— EDITED ————————- ————–

Хорошо, я сломал его и пошел проверять каждую его часть.

 $sidebar_ops = array(); $sidebar_ops[] = array( 'name' => __( 'Page Sidebar 1', WMW_ADMIN_TEXTDOMAIN ), 'value' => 'sidebar_1', ); $sidebar_ops[] = array( 'name' => __( 'Page Sidebar 2', WMW_ADMIN_TEXTDOMAIN ), 'value' => 'sidebar_2', ); //$GLOBALS['wp_registered_sidebars'] $sidebar_options = array(); foreach ( $sidebar_ops as $sidebar_op ){ $sidebar_options[] = array( 'name' => $sidebar_op['name'], 'value' => $sidebar_op['id'] ); } 

Я скомпилировал фиктивный массив, а затем использовал foreach для проверки этого.

Проблема заключается в $GLOBALS['wp_registered_sidebars'] и использовании этого массива. Какой правильный способ назвать это?

Solutions Collecting From Web of "Как вы перечислите все боковые панели в метабоксе"

Вы также можете использовать такую ​​функцию:

  <?php /* Other stuff */ function sidebarOptions(){ $sidebars = $GLOBALS['wp_registered_sidebars']; $sidebar_options = array(); foreach ( $sidebars as $sidebar ){ $sidebar_options[] = array( 'name' => $sidebar['name'], 'value' => $sidebar['id'] ); } return $sidebar_options; } /* Other stuff */ /* * Trying to print the result to check if it is what expect us * echo '<pre>'; * print_r( sidebarOptions() ); * echo '</pre>'; */ $meta_boxes[] = array( 'id' => 'WMW_page_layout_meta', 'title' => __( 'Page Layout Options', WMW_ADMIN_TEXTDOMAIN ), 'pages' => get_post_types(), 'context' => 'side', 'priority' => 'default', 'show_names' => false, // Show field names on the left 'fields' => array( array( 'name' => __( 'Page Layout', WMW_ADMIN_TEXTDOMAIN ), 'desc' => __( 'You can choose between a left, right, or no sidebar layout for your page.', WMW_ADMIN_TEXTDOMAIN ), 'id' => '_layout', 'type' => 'select', 'options' => array( array('name' => 'Full Width (No Sidebar)', 'value' => 'full_width', ), array('name' => 'Sidebar on Left, Content on Right', 'value' => 'left_sidebar', ), array('name' => 'Sidebar on Right, Content on Left', 'value' => 'right_sidebar',) ) ), array( 'name' => __( 'Page Sidebar', WMW_ADMIN_TEXTDOMAIN ), 'desc' => __( 'Choose the Sidebar to show on this page.', WMW_ADMIN_TEXTDOMAIN ), 'id' => '_page_sidebar', 'type' => 'select', 'options' => sidebarOptions() ) ) );