Поддержка Проблемы и решения Пагинация в произвольном запросе к БД

  • Решено Alexander Babaev

    (@babaevan)


    Здравствуйте уважаемые форумчане!
    Есть такой код, получающий записи из моей таблицы в БД и выводящий его в содержании страницы.

    function content_mylist_listpage($content){
    	if ($GLOBALS['post']->post_name != 'mylist') {
    		return $content;
    	}
    	$listdb = 'mylist';
    	$result = '';
    	global $wpdb;
    	$req_query = 'SELECT * FROM '.$listdb;
    	$filter = $_GET['filter'];
    	if ($filter != NULL) {
    		$req_query .= ' WHERE name LIKE \''.$filter.'%\'';
    	}
    	$req_query .= ' ORDER BY name';
    	$mylist = $wpdb->get_results($req_query);
            //Обработка списка в файле mylist.php
    	include (locate_template('inc/mylist.php'));
    	return $result;
    }
    add_filter('the_content', 'content_mylist_listpage');

    Всё хорошо работает, однако со временем записей в таблице стало много и нужно сделать пагинацию. Так как это не стандартный запрос (и даже таблица!), то стандартными средствами и не решить. Вопрос: существуют ли плагины какие-то или методы решения?

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • какие плагины то?
    в mylist.php вы же обрабатываете список $mylist — ну так выходите из цикла после 20-30-50 сколько там элементов.

    родную поддержку пагинации от wordpress вы не сделаете. но можно присобачить какой-нибудь GET параметр вроде paged и считывать его.

    но можно присобачить какой-нибудь GET параметр вроде paged и считывать его.

    А как перейти к странице 2 с 21-ой записи, если на 20-ой будет обрыв?

    параметр paged опять же.
    если он равен 3, а разбиваете вы по 20 элементов — можете посчитать, сколько нужно проигнорировать первых элементов согласно параметру paged?

    @flector, спасибо большое! Ты подсказал верное решение!

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Пагинация в произвольном запросе к БД» закрыта для новых ответов.