Intereting Posts
Невозможно экспортировать большое количество. сообщений в csv Есть ли бесплатное (или дешевое) программное обеспечение, которое можно использовать для тестирования функциональности WordPress? Как загружать style.css в тему? Как я могу передать $ atts Shortcode переменную для функции Javascript плагина Отправить электронное письмо, если изменена категория пользовательских сообщений. Изменение описания метатега wordpress с использованием функций WP Есть ли способ полностью удалить функцию комментариев и раздел? необязательный параметр в структуре постоянной ссылки Веб-сайт WordPress загружается отлично на настольных браузерах, но Safari для iOS не может полностью загрузить его woocommerce hook опубликует продукт как создать условную content_width для темы wordpress? Могу ли я использовать загрузчик файлов wp для своего собственного плагина? Редактирование нижнего колонтитула для одной страницы, сохраняя его для других Редактировать архив – {custom_page} .php через редактор WP WP_Remote_Get Не работает

Есть ли способ динамически изменять названия виджетов?

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

Я хочу добавить что-то вроде значения мета-поля за сообщение для каждого заголовка виджета.

Логика будет примерно такой:

$dynamic_title = get_the_title(); // add a filter to change the widget titles per post value // // The widget title would be something like "Recent Posts for $dynamic_title" 

Я знаю, что есть фильтр widget_title но как вы widget_title таргетинг на определенные виджеты?

пс. Я не могу использовать обычные параметры register_sidebar из-за наличия большого количества виджетов, требующих определенных заголовков.

Solutions Collecting From Web of "Есть ли способ динамически изменять названия виджетов?"

Вы можете использовать widget_display_callback (уволен, как и ожидалось, перед отображением виджета :)).

 add_filter('widget_display_callback','wptuts54095_widget_custom_title',10,3); function wptuts54095_widget_custom_title($instance, $widget, $args){ if ( is_single() ){ //On a single post. $title = get_the_title(); $instance['title'] = $instance['title'].' '.$title; } return $instance; } 

Аргумент $widget является объектом вашего класса виджетов, поэтому $widget->id_base будет содержать идентификатор вашего виджета (если он предназначен для определенного класса виджета).

Вы можете использовать свой собственный крючок для действия widget_title . Вы можете определить конкретный виджет по параметру $id_base который передается в качестве третьего аргумента в hook. Он должен работать следующим образом:

 function myplugin_widget_title( $title, $instance, $id_base ) { if ( !is_single() ) { return $title; } $post_title = get_the_title(); switch ( $id_base ) { case 'pages': return sprintf( '%s "%s"', $title, $post_title ); case 'links': return sprintf( 'Links for "%s" post.', $post_title ); // other widgets ... default: return $title; } } add_filter( 'widget_title', 'myplugin_widget_title', 10, 3 ); 

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

 $title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Pages' ) : $instance['title'], $instance, $this->id_base);