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

Как массово изменить количество постов и терминов на странице в админке?

На сайте много произвольных постов и таксономий. По дефолту в админке вордпресс отображает по 20 постов и по 20 категорий (терминов) на странице. Как можно изменить для всех разом, а не для каждого отдельно (для всех типов постов и для всех таксономий) это количество на произвольное?

для post_type нашел такой код

function my_edit_per_page( $result, $option, $user ) {
  return 100;
}
add_filter( 'get_user_option_edit_post_per_page', 'my_edit_per_page', 10, 3 ); // для стандартного типа постов
add_filter( 'get_user_option_edit_photo_per_page', 'my_edit_per_page', 10, 3 ); // для типа photo

есть еще хук edit_{$post_type}_per_page, но вручную все типы перечислять неудобно.

для страниц с таксономиями ничего не нашел, хотя есть аналогичный хук edit_{$taxonomy}_per_page

вариантов кода с хуками edit_{$post_type}_per_page и edit_{$taxonomy}_per_page не нашел, но подозреваю что они будут такими же как и код вверху, т.е все нужно перечислять по-отдельности.

есть варианты?

0
Игорь
7 лет назад
  • 1
    campusboy4742 www.youtube.com/c/wpplus

    Получить список типов постов get_post_types и через цикл их по этим хукам. Тоже самое с таксономиями - get_taxonomies.

    Kama 7 лет назад

    В частности нужно сделать так:

    if( is_admin() ){
    
    	add_action('init', 'set_any_per_page');
    	function set_any_per_page(){
    		// для постов - хук edit_{$post_type}_per_page
    		$post_types = get_post_types( array('_builtin' => false), 'names');
    		foreach( $post_types as $post_type ){
    			add_filter( "edit_{$post_type}_per_page", 'my_edit_per_page' );
    		}
    
    		// для такс - хук edit_{$taxonomy}_per_page - 'edit_' . $this->screen->taxonomy . '_per_page'
    		$taxonomies = get_taxonomies( array('_builtin' => false), 'names' );
    		foreach( $taxonomies as $taxonomy ){
    			add_filter( "edit_{$taxonomy}_per_page", 'my_edit_per_page' );
    		}
    	}
    
    	function my_edit_per_page( $result, $option, $user ) {
    		return 100;
    	}
    
    }
    

    И обрати внимание что есть другие хуки, не те что ты нашел. Твои хуки фильтруют опцию юзера получаемую из БД, но есил её там нет, то возомжно хук просто не сработает... Поэтому лучше использовать прямые хуки. Их в ядре оказало много:

    Игорь 7 лет назад

    спасибо, наверно, должно получиться, но массив $post_types оказывается пустым почему-то https://wp-kama.ru/function/get_post_types/comment-page-1#comment-18900

    Kama 7 лет назад

    Я там ответил уже. Нельзя его совать прямо в functions.php - нужно вызывать из контекста. Повесь на хук, раз ты из functions.php вызываешь. Поправил код в комменте выше...

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