WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Как убрать пагинацию в меню

Во вкладке Все при большом количестве рубрик появляется пагинация, тем самым рушиться иерархия рубрик, очень не удобно, помогите пожалуйста. Так же будет интересно как подобное сделать и при добавлении в меню страниц... Спасибо заранее

0
Венер
5.8 лет назад
  • 1
    campusboy4752 www.youtube.com/c/wpplus

    Здравствуйте. Чтение кода подсказывает, что изменить количество выводимых элементов можно с помощью фильтра nav_menu_meta_box_object:

    add_filter( 'nav_menu_meta_box_object', function ( $post_type ) {
    	$post_type->_default_query['posts_per_page'] = 1000;
    
    	return $post_type;
    } );

    Проблема в том, что этот фильтр не применяется при отображении метабоксов для таксономий, поэтому там я вижу только одно костыльное решение:

    add_filter( 'get_terms_args', function ( $args, $taxonomies ) {
    	if ( strpos( $_SERVER['SCRIPT_NAME'], 'nav-menus.php' ) !== false ) {
    		$args['number'] = 1000;
    	}
    
    	return $args;
    }, 10, 2 );

    Также замечу, что я в примерах установил отображение не более 1000 элементов. Если, к примеру, записей 589, то естественно и пагинация не появится. А если на сайте более 1000 записей, то снова появится пагинация и предел придётся увеличить. Это дело логики. И возникает негативный эффект: чем больше элементов запрашивается, тем медленнее будет генерироваться страница создания меню.

    Венер 5.7 лет назад

    Первый способ со страницами помог, а вот второй к сожалению количество отображаемых рубрик на одной странице не поменял.
    Если есть ещё какое решение, буду рад его увидеть ) спасибо

    campusboy 5.7 лет назад

    Нет, других не будет. Эти два кода оба у меня отрабатывают. Других вариантов не вижу.

    campusboy 5.7 лет назад

    А может и будет. Тот код рабочий, выводятся более 50 рубрик (таково значение по умолчанию для метабокса), значит лимит удалось поднять. Но пагинация этого не учитывает. Её можно скрыть. В итоге код такой:

    add_filter( 'get_terms_args', function ( $args, $taxonomies ) {
    	if ( strpos( $_SERVER['SCRIPT_NAME'], 'nav-menus.php' ) !== false && in_array( 'category', $taxonomies ) ) {
    		$args['number'] = 1000;
    
    		add_action( 'admin_print_footer_scripts', function () {
    			?>
    			<style>
    				#add-category .add-menu-item-pagelinks {
    					display: none;
    				}
    			</style>
    			<?php
    		} );
    	}
    
    	return $args;
    }, 10, 2 );
    Венер 5.7 лет назад

    Дружище, ты лучший!!! все работает, спасибо )

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация