Я изменил свою страницу результатов поиска с функцией изменения количества результатов поиска до 10. Как я могу сделать то же самое, но для страниц тегов / терминов?
function change_wp_search_size($query) {
if ($query->is_search) // Make sure it is a search page
$query->query_vars['posts_per_page'] = 10; // Change 10 to the number of posts you would like to show
return $query; // Return our modified query variables
}
add_filter('pre_get_posts', 'change_wp_search_size'); // Hook our custom function onto the request filter
Нашел и попробовал этот код и он не работал
function main_query_mods($query) {
// check http://codex.wordpress.org/Conditional_Tags to play with other queries
if (!$query->is_main_query()) {
return;
}
if (is_tag()) {
$query->set('posts_per_page', 10);
}
}
add_action('pre_get_posts', 'main_query_mods');
Проблема с вашим
is_tag()
; ты должен так
$query->is_tag()
,
function main_query_mods($query) {
if ($query->is_tag() && $query->is_main_query() && !is_admin()) {
$query->set('posts_per_page', 10);
}
}
add_action('pre_get_posts', 'main_query_mods');
ОБНОВЛЕНО
Если вы хотите ограничить пост на 10 на обоих
tag
а такжеsearch
страница тогда
ты должен использоватьis_tag()
а такжеis_search()
вместе в вашемif
заявление.
function wh_tag_search_postCount($query) {
if (($query->is_tag() || $query->is_search()) && $query->is_main_query() && !is_admin()) {
$query->set('posts_per_page', 10);
}
}
add_action('pre_get_posts', 'wh_tag_search_postCount');
ОБНОВЛЕНО v3
Если вы хотите исключить страницу магазина, вы можете использовать
is_shop()
а также
is_product_category()
для страницы архива категории продукта.
function wh_tag_search_postCount($query) {
//if WooCommerce is active
if (class_exists('WooCommerce')) {
//if current page is a shop page or product category page then dont do any thing
if (is_shop() || is_product_category())
return;
}
if (($query->is_tag() || $query->is_search()) && $query->is_main_query() && !is_admin()) {
$query->set('posts_per_page', 10);
}
}
add_action('pre_get_posts', 'wh_tag_search_postCount');
Весь код протестирован и работает.
Надеюсь это поможет!
Других решений пока нет …