Intereting Posts
Показать все сообщения текущего тега просмотра Дублируйте сообщения и измените категорию Лучшее изображение / уменьшенное изображение Этот тип файла недопустим. Попробуйте другой Удаление элементов меню панели инструментов через базу данных Присвоение одного и того же настраиваемого мета-поля нескольким типам сообщений Как настроить Eclipse и XDebug для стека WordPress Bitnami Действие «После загрузки файла» Как отображать сообщения с определенным значением в настраиваемом поле в мой цикл? Позиция верхнего уровня заменяет другую запись wp_trash_post не стреляет Регистрация нового пользователя в интерфейсе Фильтр по типу виджета не работает с настраиваемыми ссылками Использование WordPress для статических маркетинговых страниц и блога на разных URL-адресах Преобразование существующего сайта WordPress (с несколькими плагинами) в Multisite

Добавление виджета в строку HTML

Следуя моему предыдущему вопросу , я смог заставить свою кожу переопределить функцию, которую я хотел изменить от родителя.

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

Что-то вроде этого:

<div id="header-text-nav-container" class="clearfix"> //... <div id="wp-custom-header" class="wp-custom-header"> <div class="header-image-wrap"> header image is displayed here </div> <div id="header-image-widget-area"> my widget should be displayed here</div> </div> </div> 

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

 /**************************/ /* Register My Widget /**************************/ add_action( 'widgets_init', 'my_register_widget' ); function my_register_widget() { register_sidebar( array( 'id' => 'header_image_widget', 'name' => __( '(my) Widget over Header Image' ), 'description' => __( 'My widget to be displayed over the header image.' ), 'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' ) ); /* Repeat register_sidebar() code for additional widgets. */ } /**********************************************/ /* Header image function replacement /**********************************************/ // this makes wp run my function after the parent one, because my priority is 20 and the parent priority is defined to 10 add_filter( 'get_header_image_tag', 'my_colormag_header_image_markup', 20, 3 ); // Filter the get_header_image_tag() for option of adding the link back to home page option function my_colormag_header_image_markup( $html, $header, $attr ) { $output = ''; $header_image = get_header_image(); if( ! empty( $header_image ) ) { $output .= '<div class="header-image-wrap"> <img src="..."> </div>'; /* adding my widget to the header image */ if ( is_active_sidebar( 'header_image_widget' ) ) { //-- my widget area starts here -- $output .= '<div id="header-image-widget-area">' . dynamic_sidebar( 'header_image_widget' ) . '</div>'; //-- my widget area ends here -- } } return $output; } 

Итак, как вы можете видеть, то, что я сделал (и пытаюсь сделать), – добавить виджет в раздел сразу после заголовка div . Поэтому я добавил код моего раздела в $output а также добавил dynamic_sidebar( 'header_image_widget' ) в строку, чтобы виджет мог отображаться внутри этого div (… я думал …).

Как только я протестировал, я понял, что он не работает (по крайней мере, как я и ожидал). раздел div получил 1 внутри (соответствует TRUE который является опцией dynamic_sidebar потому что виджет был выполнен правильно), и виджет вместо того, чтобы быть добавленным внутри раздела, который я определил, фактически был добавлен перед секцией заголовка и за пределами раздела где изображено изображение заголовка и определенный раздел. У меня есть что-то вроде этого:

 <div id="header-text-nav-container" class="clearfix"> //... <div id="widget-name-9"> this is the widget code defined by my widget </div> <div id="wp-custom-header" class="wp-custom-header"> <div class="header-image-wrap"> header image is displayed here </div> <div id="header-image-widget-area"> 1 </div> </div> </div> 

Итак, мой вопрос для кого-то, как может быть известно, в чем проблема: как добавить виджет в строку $output , чтобы он отображался внутри раздела « header-image-widget-area » (вместо 1 / true)?

Заранее благодарю вас за любую помощь, которую вы можете предоставить

  • Miguel

Solutions Collecting From Web of "Добавление виджета в строку HTML"

Если вы хотите добавить область виджета в качестве части выходного var, вам нужно использовать функции ob, потому что она отражается и не возвращается.

Как это:

 $output .= '<div id="header-image-widget-area">; ob_start(); dynamic_sidebar( 'header_image_widget' ) $output .= ob_get_clean(); $output .='</div>';