Intereting Posts
Как локализовать значение сообщений Как передавать данные? Список пользователей в раскрывающемся списке для входа Можете ли вы зарегистрировать два события cron в одной функции? Как правильно отключить ПЕРЕСМОТРЫ и AUTOSAVE для всего сайта и, возможно, для персонализированного типа сообщений Проблемы с запросом WP_Query для персонализированного типа сообщения Ограничить доступ к содержимому для зарегистрированных пользователей После настройки multisite на localhost запросы на localhost перенаправляются в производственный домен Пользовательская ошибка загрузки сообщения типа сообщения с пользовательской ролью пользователя Категории Помощь шаблону Ничего не найдено из запроса $ wpdb-> get_results () при попытке присоединиться к более чем одному запросу мета-ключа Как загрузить неизвестный тип файла? Как сбросить ошибку уведомления администратора при загрузке изображения Как показать пользовательское значение (флажок) в списке сообщений администратора? Как применить фильтр style_loader_src с исключением конкретного файла?

Как получить bbpress липкие темы

Я хочу получить липкие темы bbpress, используя такой запрос:

$sticky = get_option('sticky_posts'); rsort( $sticky ); $sticky = array_slice( $sticky, 0, 2); query_posts( array( 'post__in' => $sticky, 'caller_get_posts' => 1, 'post_type'=> 'topic' ) ); if (have_posts()) : while (have_posts()) : the_post(); //do something endwhile; endif; 

Как я могу сделать запрос что-то вроде этой работы?

Solutions Collecting From Web of "Как получить bbpress липкие темы"

Вы можете сделать запрос, как указано выше, используя следующий код.

 <?php query_posts( array( 'posts_per_page' => 2, 'meta_key' => '_bbp_sticky_topics', 'post_type'=> 'topic', 'order' => 'ASC' ) ); if (have_posts()) : while (have_posts()) : the_post(); //do something endwhile; endif; ?> 

Но я настоятельно рекомендую вам не изменять основной запрос с помощью query_posts () и вместо этого использовать WP_Query следующим образом.

 <?php $query = new WP_Query( array( 'posts_per_page' => 2, 'meta_key' => '_bbp_sticky_topics', 'post_type'=> 'topic', 'order' => 'ASC' ) ); if ( $query->have_posts()) : while ($query->have_posts()) : $query->the_post(); //do something endwhile; endif; /* Restore original Post Data */ wp_reset_postdata(); ?> 

лучший способ:

 $query = new WP_Query( array( 'p' => $post->ID, 'post_type'=> 'forum', 'meta_key' => '_bbp_sticky_topics' ) ); if ( $query->have_posts()) : while ($query->have_posts()) : $query->the_post(); $sticky = get_post_meta( $post->ID, '_bbp_sticky_topics' ); $sticky = maybe_unserialize( $sticky ); endwhile; endif; wp_reset_postdata(); 

Тогда $ sticky будет массивом со всеми липкими темами из текущего форума, который вы запрашиваете, вы можете сделать второй запрос с post__in чтобы показать содержимое липкой темы, название и т. Д.

После многих обходных решений я нашел решение. Этот код даст вам результаты и почему я объясню:

 <?php $query = new WP_Query( array( 'posts_per_page' => 2,'post_type'=> 'forum', 'meta_key' => '_bbp_sticky_topics' ) ); if ( $query->have_posts()) : while ($query->have_posts()) : $query->the_post(); the_title(); echo '<br />'; the_ID(); echo '<br />'; endwhile; endif; /* Restore original Post Data */ wp_reset_postdata(); ?> 

трюк заключается в использовании 'post_type'=> 'forum' вместо 'post_type'=> 'topics' , и он покажет вам форумы вместо тем, потому что wp_postmeta сохраняет данные, подобные этому a:1:{i:0;i:632;} с post_id форума не темы . Спасибо за Винода Дальви, он действительно дал мне направление для решения этой проблемы.

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

 $stickies = get_option( '_bbp_super_sticky_topics', array() );