Поддержка Проблемы и решения Постраничная навигация

  • Здравствуйте
    создал файл page-favorit.php и создал в вордпресс страницу favorit, в этом же файле вывел список статей.

    Проблема в том, что на этой странице не срабатывает пагинация, в адресной строке исчезает часть ссылки ?page=

    То есть урл должен выглядеть вот так
    сайт/favorit/?page=2
    Но в строке выводиться вот так:
    сайт/favorit/2

    Подскажите, как правильно создавать страницу, чтобы работала пагинация, побывал выводить код в файле home.php все работает отлично.

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Но в строке выводится вот так: сайт/favorit/2

    Пагинация для отдельных страниц именно так и выглядит (при включённых ЧПУ).

    Покажите код шаблона.

    Если ввыводить вот такой ссылкой, то пагинация работает,
    /favorit/?preview=true
    /favorit/?preview=true&page=2

    Вот собственно функция вывода вывода статей

    //Пагинация
    $perpage = 5;
    $count_fav = count($favorites);
    $count_pages = ceil($count_fav / $perpage);
    
    	// если число страниц равно 0
    if(!$count_pages) $count_pages = 1;
    // получаем номер страницы
    if( isset($_GET['page']) ){
    	$page = (int)$_GET['page'];
    	if( $page < 0 ) $page = 1;
    }else{
    	$page = 1;
    }
    // если запрошенная страница больше максимума
    if( $page > $count_pages ) $page = $count_pages;
    
    // первая картинка на страницу
    $start_pos = ($page - 1) * $perpage;
    // последняя картинка на страницу
    $end_pos = $start_pos + $perpage;
    // если последняя картинка больше максимума картинок
    if( $end_pos > $count_fav ) $end_pos = $count_fav;
    
    // получаем пагинацию
    $pagination = pagination($page, $count_pages);
    
    if (!$favorites){
    	echo '<p>Список пуст</p>';
    	return;
    }
    echo '<ul class="fav-list">';
    for($j = $start_pos; $j < $end_pos; $j++):
    $image_attributes = wp_get_attachment_image_src(get_post_thumbnail_id($favorites[$j]), 'thumbnail');
    	echo '<li><a href="'.get_permalink($favorites[$j]).'"><img src="'.$image_attributes[0].'" alt="" />'.get_the_title($favorites[$j]).'<span class="del-link" data-post="'. $favorites[$j] .'" >❎</span></a>
    
    	<span class="fav-load"><img  src="'.$src_img.'" alt="" /></span>
    	</li>';
    endfor;
    echo '</ul>';
    if( $count_pages > 1 ):
    echo $output . '<div class="clear"></div><div class="pagination">'
    .$pagination. '</div>';
    endif;
    }

    Вот сама пагинация

    function pagination($page, $count_pages, $modrew = false){
    	// << < 3 4 5 6 7 > >>
    	$back = null; // ссылка НАЗАД
    	$forward = null; // ссылка ВПЕРЕД
    	$startpage = null; // ссылка В НАЧАЛО
    	$endpage = null; // ссылка В КОНЕЦ
    	$page2left = null; // вторая страница слева
    	$page1left = null; // первая страница слева
    	$page2right = null; // вторая страница справа
    	$page1right = null; // первая страница справа
    
    	$uri = "?";
    	if(!$modrew){
    		// если есть параметры в запросе
    		if( $_SERVER['QUERY_STRING'] ){
    			foreach ($_GET as $key => $value) {
    				if( $key != 'page' ) $uri .= "{$key}=$value&";
    			}
    		}
    	}else{
    		$url = $_SERVER['REQUEST_URI'];
    		$url = explode("?", $url);
    		if(isset($url[1]) && $url[1] != ''){
    			$params = explode("&", $url[1]);
    			foreach($params as $param){
    				if(!preg_match("#page=#", $param)) $uri .= "{$param}&";
    			}
    		}
    	}
    
    	if( $page > 1 ){
    		$back = "<a class='nav-link' data-page='".($page-1)."' href='{$uri}page=" .($page-1). "'><</a>";
    	}
    	if( $page < $count_pages ){
    		$forward = "<a class='nav-link' data-page='".($page+1)."' href='{$uri}page=" .($page+1). "'>></a>";
    	}
    	if( $page > 3 ){
    		$startpage = "<a class='nav-link' data-page='1' href='{$uri}page=1'>&laquo;</a>";
    	}
    	if( $page < ($count_pages - 2) ){
    		$endpage = "<a class='nav-link' data-page='".$count_pages."' href='{$uri}page={$count_pages}'>&raquo;</a>";
    	}
    	if( $page - 2 > 0 ){
    		$page2left = "<a class='nav-link' data-page='".($page-2)."' href='{$uri}page=" .($page-2). "'>" .($page-2). "</a>";
    	}
    	if( $page - 1 > 0 ){
    		$page1left = "<a class='nav-link' data-page='".($page-1)."' href='{$uri}page=" .($page-1). "'>" .($page-1). "</a>";
    	}
    	if( $page + 1 <= $count_pages ){
    		$page1right = "<a class='nav-link' data-page='".($page+1)."' href='{$uri}page=" .($page+1). "'>" .($page+1). "</a>";
    	}
    	if( $page + 2 <= $count_pages ){
    		$page2right = "<a class='nav-link' data-page='".($page+2)."' href='{$uri}page=" .($page+2). "'>" .($page+2). "</a>";
    	}
    
    	return $startpage.$back.$page2left.$page1left.'<a class="nav-active">'.$page.'</a>'.$page1right.$page2right.$forward.$endpage;
    }
    
    function portfolio_page_template( $template ) {
    	if( is_page('portfolio')  ){
    		if ( $new_template = locate_template( array( 'portfolio-page-template.php' ) ) )
    			$template =  $new_template ;
    	}
    
    	return $template;
    }
    add_filter( 'template_include', 'portfolio_page_template', 99 );

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