Intereting Posts
Плагин для отображения pagemap под определенной страницей и следующей / предыдущей страницей под определенной страницей? Как удалить? P = из коротких ссылок WordPress Комментарий не отображается правильно Организатор событий: список событий включает обычные сообщения и пользовательские поля? Показывать конкретную страницу по основному индексу вместо последнего echo do_shortcode для контактной формы 7 из динамически загруженного php-файла Сделать некоторые ссылки, созданные из функции wp_nav-menu unclickeable? Использование wp-cron в обратном направлении – проблемы с wp_remote_post, fsockopen error Отображение пользовательских типов сообщений с таксономией Как создать партнерскую программу в WordPress? Поддомены Wordrpess (многосайтовые) без подстановочных знаков Как изменить положение пункта меню? Данные метаданных сохраняются, но НЕ отображаются в текстовом поле мета-поля. Зачем? add_filter to the_content после apply_filters Помогите решить ошибку t_echo php при использовании echo do_shortcode

Как применить фильтр внутри одного wp_query?

У меня есть специальный запрос на моей домашней странице, который возвращает сообщения из пользовательской таксономии.

Я пытаюсь применить этот фильтр для него.

add_filter( 'post_limits', 'my_post_limits' ); function my_post_limits( $limit ) { if ( is_home() ) { return 'LIMIT 0, 3'; } return $limit; } 

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

Вот как выглядит мой полный запрос:

 add_filter( 'post_limits', 'my_post_limits' ); function my_post_limits( $limit ) { if ( is_home() ) { return 'LIMIT 0, 3'; } return $limit; } $args = array( 'post_type' => array('post','featured-post'), 'tax_query' => array( array( 'taxonomy' => 'featured', 'field' => 'slug', 'terms' => 'featured-homepage' ) ) ); $slider_query = new WP_Query( $args ); if ( $slider_query->have_posts() ): while ( $slider_query->have_posts() ) : $slider_query->the_post(); $tip_post=get_post_type(); if (get_post_type()=='post') { $thumb = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'bones-thumb-1280' ); $url = $thumb['0']; // posts are here } elseif(get_post_type()=='featured-post') { // custom posts are here } endwhile; else: endif; 

Вы должны использовать параметр posts_per_page как это было предложено @Tamil.

Но в целом вы также можете удалить фильтры, которые вы добавляете.

В вашем случае вы можете удалить его после WP_Query() с помощью

 add_filter( 'post_limits', 'my_post_limits' ); $slider_query = new WP_Query( $args ) remove_filter( 'post_limits', 'my_post_limits' ); 

поэтому это не повлияет на более поздние запросы.

Вы можете прочитать об этом здесь, в Codex: http://codex.wordpress.org/Function_Reference/remove_filter

Попробуйте аргумент post_per_page

 $args = array( 'post_type' => array('post','featured-post'), 'tax_query' => array( array( 'taxonomy' => 'featured', 'field' => 'slug', 'terms' => 'featured-homepage' ) ), 'posts_per_page' => 7 );