Intereting Posts
В чем преимущества использования специального типа почтового архива? Как добавить иконки iOS и fav в тему? Как автоматически загружать / прикреплять статическое изображение google в качестве отображаемого изображения сообщения? WordPress AJAX Load Больше функции дублирования сообщения Есть ли бесшовное решение для отправки плагинов на wordpress.org SVN и GitHub? Опубликовать содержимое определенной записи «Тип персонализированного сообщения» в сообщении, используя короткий код Передача аргументов моей функции с do_action и add_action не работает Функция короткого кода – не может получить ничего другого, чтобы вернуться после запуска короткого кода в коротком коде Исправление пользовательской разбивки на страницы без изменения настроек для каждой страницы на странице Должен ли я использовать пользовательский тип сообщения для пользовательского нижнего колонтитула? WordPress автоматически заменяет пробел знаком подчеркивания при имени категории обновления Как создать раскрывающееся меню, например, в двадцать одиннадцати темах? Автоматическое создание страниц в сообщении по количеству слов Использование slug категории в правиле add_rewrite Как скрыть дочерние категории от отображения

Включение специального типа сообщений в виджет Архивы

У меня есть пользовательский тип сообщения, называемый «видео», который я хочу включить в виджет Архивы (виджет для акций в теме TwentyTwelve). Он уже отображается на странице архивов, но только не в виджетах.

у меня уже есть

add_action( 'pre_get_posts', 'add_my_post_types_to_query' ); function add_my_post_types_to_query( $query ) { if ( $query->is_main_query() ) $query->set( 'post_type', array( 'post', 'videos' ) ); return $query; } 

in functions.php – могу ли я изменить оператор IF как нечто вроде «если запрос основного запроса или архивный запрос»? Как я могу это сделать?

Solutions Collecting From Web of "Включение специального типа сообщений в виджет Архивы"

Виджет Архива использует wp_get_archives() для отображения архива.

Если вы хотите настроить таргетинг на все функции wp_get_archives() , вы можете использовать фильтр getarchives_where чтобы добавить свой собственный тип сообщения:

 add_filter( 'getarchives_where', 'custom_getarchives_where' ); function custom_getarchives_where( $where ){ $where = str_replace( "post_type = 'post'", "post_type IN ( 'post', 'videos' )", $where ); return $where; } 

Если вы хотите настроить таргетинг только на первый виджет архива , вы можете попробовать

 add_action( 'widget_archives_args', 'custom_widget_archives_args' ); function custom_widget_archives_args( $args ){ add_filter( 'getarchives_where', 'custom_getarchives_where' ); return $args; } 

с

 function custom_getarchives_where( $where ){ remove_filter( 'getarchives_where', 'custom_getarchives_where' ); $where = str_replace( "post_type = 'post'", "post_type in ( 'post', 'videos' )", $where ); return $where; } 

где фильтр удален, чтобы предотвратить воздействие на другие части.

Это сработало для меня:

 class CPT_Archives extends WP_Widget { function widget() { ... add_filter('getarchives_where', array($this, 'getarchives_where_filter'), 10, 2); $args = array( 'format' => 'option', 'echo' => false, ); $options = wp_get_archives($args); $options = str_replace('?m=', '?post_type=CPT&m=', $options); echo '<select name="CPT_archive-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">'; echo ' <option value="">' . esc_attr( __( 'Select Month' ) ) . '</option>'; echo $options; echo '</select>'; ... } function getarchives_where_filter($where) { $where = str_replace( "post_type = 'post'", "post_type = 'CPT'", $where ); return $where; } }