Intereting Posts
ModSecurity && Admin Ajax: блокировка сервера Регистрация пользователя Умеренная Система управления пользователями похожа на WordPress? TinyMCE – Вставка носителя в начале сообщения Собирайте сообщения в корзину / лайтбокс и делитесь с другим пользователем Как показать сайты в меню «Мои сайты» в панели администратора wordpress multisite? Как остановить фатальную ошибку при загрузке файла шаблона темы напрямую Как исправить проблему кодирования символов в WordPress здесь Предоставление посетителям доступа к странице с защитой паролем через внешний скрипт Поле Fetch и ACF из пользовательской таксономии за пределами категории / страницы архива? Javascript, который будет выполняться только на дочерних страницах определенного родителя Как добавить событие jQuery OnClick в кнопку Опубликовать сообщения? Добавить атрибут для каждой ссылки в панели инструментов администратора Nginx + Перенаправление плагинов Перерывы Постоянная ссылка Переопределить URL-адрес по умолчанию для страниц автора?

Прокрутка виджета в боковой панели

У меня есть боковая панель под названием footer, я знаю, что могу использовать dynamic_sidebar (), но мне нужно разделить ее на отдельные виджеты.

У меня есть следующее до сих пор, которое дает мне имя виджетов, например, текст-1, категория-2 и т. Д., Но я получаю содержимое для каждого из них.

$widget_list= get_option('sidebars_widgets'); if($widget_list) foreach($widget_list["footer"] as $widget){ var_dump($widget); } 

Возможно ли получить содержимое виджета из имени виджета?

Solutions Collecting From Web of "Прокрутка виджета в боковой панели"

Зарегистрированные виджеты в sidebar-1 могут быть

 [sidebar-1] => Array ( [0] => categories-2 [1] => archives-4 [2] => recent-comments-4 [3] => calendar-2 [4] => search-2 [5] => archives-2 [6] => text-4 [7] => recent-posts-2 [8] => nav_menu-2 ) 

Если вы получили, например, calendar-2 виджет, то из:

 print_r( $GLOBALS['wp_registered_widgets']['calendar-2'] ); 

вы получите что-то вроде:

 [calendar-2] => Array ( [name] => Dagatal [id] => calendar-2 [callback] => Array ( [0] => WP_Widget_Calendar Object ( [id_base] => calendar [name] => Calendar [widget_options] => Array ( [classname] => widget_calendar [description] => A calendar of your site’s Posts. ) [control_options] => Array ( [id_base] => calendar ) [number] => 2 [id] => calendar-2 [updated] => [option_name] => widget_calendar ) [1] => display_callback ) [params] => Array ( [0] => Array ( [number] => 2 ) ) [classname] => widget_calendar [description] => A calendar of your site’s Posts. ) 

Поэтому вы можете попробовать эту модифицированную версию dynamic_sidebar() для вызова виджета, который вы разместили на данной боковой панели:

 /** * Show a given widget based on it's id and it's sidebar index * * Example: wpse_show_widget( 'sidebar-1', 'calendar-2' ) * * @param string $index. Index of the sidebar where the widget is placed in. * @param string $id. Id of the widget. * @return boolean. TRUE if the widget was found and called, else FALSE. */ function wpse_show_widget( $index, $id ) { global $wp_registered_widgets, $wp_registered_sidebars; $did_one = FALSE; // Check if $id is a registered widget if( ! isset( $wp_registered_widgets[$id] ) || ! isset( $wp_registered_widgets[$id]['params'][0] ) ) { return FALSE; } // Check if $index is a registered sidebar $sidebars_widgets = wp_get_sidebars_widgets(); if ( empty( $wp_registered_sidebars[ $index ] ) || empty( $sidebars_widgets[ $index ] ) || ! is_array( $sidebars_widgets[ $index ] ) ) { return FALSE; } // Construct $params $sidebar = $wp_registered_sidebars[$index]; $params = array_merge( array( array_merge( $sidebar, array('widget_id' => $id, 'widget_name' => $wp_registered_widgets[$id]['name']) ) ), (array) $wp_registered_widgets[$id]['params'] ); // Substitute HTML id and class attributes into before_widget $classname_ = ''; foreach ( (array) $wp_registered_widgets[$id]['classname'] as $cn ) { if ( is_string($cn) ) $classname_ .= '_' . $cn; elseif ( is_object($cn) ) $classname_ .= '_' . get_class($cn); } $classname_ = ltrim($classname_, '_'); $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $id, $classname_); $params = apply_filters( 'dynamic_sidebar_params', $params ); // Run the callback $callback = $wp_registered_widgets[$id]['callback']; if ( is_callable( $callback ) ) { call_user_func_array( $callback, $params ); $did_one = TRUE; } return $did_one; } 

где вы называете это следующим образом:

 wpse_show_widget( 'sidebar-1', 'calendar-2' ); 

Другой способ – попытаться использовать the_widget() , где вам нужно будет узнать имя класса виджета.