salocin
  • 0
Новичок

Результат пейджинга get_posts в функции

  • 0

Я создал функцию для использования в качестве шорткода, чтобы позволить мне отображать определенный тип сообщений на моей странице. Функция работает хорошо, но хотелось бы, чтобы результаты выводились на страницы, а навигация появлялась только при необходимости. это мой текущий код


extract(shortcode_atts(array("country" => '' ), $atts));
$country = preg_replace('~&#x0*([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $country );  
$argsq = array ('post_type' => 'quote',
                    'country' => $country,
                'orderby' => 'meta_value' 
              );


$testim= get_posts($argsq );
$output = '';
foreach ($testim as $testim_post){

$output .= "";
$output .= "<b>".$testim_post->post_content."</b><br />";
$output .= $testim_post->post_title;
$output .= "";         
}   
return $output; 
Share
  1. добавьте эту функцию разбиения на страницы:

    function pagination( $query, $baseURL = get_bloginfo( $url ), $echo = true ) {  
        $page = $query->query_vars["paged"];  
        if ( !$page ) $page = 1;  
        $qs = $_SERVER["QUERY_STRING"] ? "?".$_SERVER["QUERY_STRING"] : "";  
        // Only necessary if there's more posts than posts-per-page  
        if ( $query->found_posts > $query->query_vars["posts_per_page"] ) {  
            $re = '<ul class="paging">'; 
            // Previous link? 
            if ( $page > 1 ) { 
                $re .= '<li class="previous"><a href="'.$baseURL.'page/'.($page-1).'/'.$qs.'">« previous</a></li>'; 
            } 
             // Loop through pages 
            for ( $i=1; $i <= $query->max_num_pages; $i++ ) { 
                // Current page or linked page? 
                if ( $i == $page ) { 
                    $re .= '<li class="active">'.$i.'</li>'; 
                } else { 
                    $re .= '<li><a href="'.$baseURL.'page/'.$i.'/'.$qs.'">'.$i.'</a></li>'; 
                } 
            } 
            // Next link? 
            if ( $page < $query->max_num_pages ) { 
            $re .= '<li><a href="'.$baseURL.'page/'.($page+1).'/'.$qs.'">next »</a></li>'; 
            } 
            $re .= '</ul>';  
            if ($echo){
                echo $re;
            }else{
                return $re;
            }
        }  
    }  
    

    затем добавьте параметр paged в свой запрос шорткода и получите постоянную ссылку на текущую страницу:

    global $post;
    $baselink = get_permalink($post->ID);
    extract(shortcode_atts(array("country" => '' ), $atts));
    $country = preg_replace('~?*([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $country ); 
    $page = (get_query_var('paged')) ? get_query_var('paged') : 1; 
    $argsq = array (
        'post_type' => 'quote',
        'country' => $country,
        'orderby' => 'meta_value', // you have to specify a meta_key for this to work
        'page' => $page 
    );
    
    
    $testim= get_posts($argsq );
    

    и непосредственно перед тем, как вы вернете разбивку на страницы с вашим выводом:

    return $output .pagination($testim,$baselink,false);
    
    • 0

Оставить ответ

You must login to add an answer.