2010-07-24 4 views
5

Я пытаюсь получить разбиение на страницы, используя плагин wp pagenavi и пользовательский тип сообщения (портфолио) в WordPress, и мне не повезло.WordPress пользовательский тип сообщения pagination

Вот урезанная версия моей страницы портфолио:

<?php get_header(); ?> 

<?php 
    $type = 'portfolio'; 
    $args=array(
    'post_type' => $type, 
    'post_status' => 'publish', 
    'paged' => $paged, 
    'posts_per_page' => 1, 
    'caller_get_posts'=> 1 
); 
    $temp = $wp_query; // assign original query to temp variable for later use 
    $wp_query = null; 
    $wp_query = new WP_Query($args); 
?> 

<?php if($wp_query->have_posts()) : while($wp_query->have_posts()) : $wp_query->the_post(); ?> 
... 
<?php endwhile; else : ?> 
... 
<?php endif; ?> 

<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } 
    $wp_query = null; $wp_query = $temp; ?> 

<?php get_footer(); ?> 

У меня есть мое Permalinks значения:

/%postname%/ 

и я вновь спас их.

Когда я добрался до страницы два моего портфолио, я получаю страницу 404. Любая идея, почему это происходит?

Спасибо за помощь.

+3

Эта задача была решена здесь, если кто-то еще работает в одной и той же проблемой: http://wordpress.org/support/topic/429149?replies=1#post-1616810 – Joe

+0

Почему бы не сделать это ответ и знак, как принято? – Kev

ответ

0

У меня была проблема с нумерацией страниц в Wordpress, и не мог исправить это, так что я помотал собственный РАСШИРЕНИЯ класса WP_Query ->MF_Query

Просто используйте MF_Query вместо WP_Query, а затем использовать $your_query->next("Next Page") или $your_query->prev("Previous Page") добавить следующие и предыдущие ссылки (текст имеет значение по умолчанию, так что никаких аргументов требуется.

требуется, чтобы вы передаете свои аргументы непосредственно к классу инициализации как массив, так как проставлению для различных вариантов у вас есть со стандартным WP_Query.

Немного взломанный, но он работает !!

1

ТАМОЖЕННЫЙ ПОСТ числовой тип нумерации страниц ->http://designphiliconline.blogspot.in/2012/08/wordpress-custom-post-type-pagination.html

Это будет работать с Постоянная ссылка установлен по умолчанию или postname

+1

Подведите итог сообщения, на которое вы ссылаетесь; просто предоставление ссылки не помогает. – LittleBobbyTables

2

Я думаю, что вы имеете плохой случай старый WordPress URL перенаправления.

Попробуйте добавить этот фильтр, чтобы остановить его:

add_filter('redirect_canonical','my_disable_redirect_canonical'); 

function my_disable_redirect_canonical($redirect_url) { 
    if (is_single('portfolio')) 
    $redirect_url = false; 
    return $redirect_url; 
} 
+0

Точно, однако, во многих случаях строка должна быть: if (get_post_type ($ post) == 'portfolio' && is_archive()) $ redirect_url = false; – Imperative

0

Это путь я иду передать перемещаемый переменную в СРТ запрос для навигации, вы можете иметь различные методы сделать это, но это единственный один он работает для меня, используя WP_QUERY. И не нужно никакого плагина для навигации только стандартных навигационных ссылок.

Вы должны поместить эту строку здесь, прежде чем WP_Query

$paged = 1; 
if (get_query_var('paged')) $paged = get_query_var('paged'); 
if (get_query_var('page')) $paged = get_query_var('page'); 

$temp = $wp_query; 
       $wp_query = null; 
       $wp_query = new WP_Query(); 
       $wp_query->query('post_type=portafolio&showposts=7&orderby=post_date&order=DESC&paged='.$paged); 
while ($wp_query->have_posts()) : $wp_query->the_post(); 

//post format 
get_template_part("content");?> 

    <?php endwhile; ?> 

    //pagination links here 

    <?php 
     $wp_query = null; 
     $wp_query = $temp; // Reset 
    ?> 

После изменения файл цикла добавьте в ваш functions.php это переменная, которая будет работать на страницу с контентом вашего.

function paginate() { 
    global $wp_query, $wp_rewrite; 
    $wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1; 

    $pagination = array( 
    'base' => @add_query_arg('page','%#%'), 
    'format' => '', 
    'total' => $wp_query->max_num_pages, 
    'current' => $current, 
    'show_all' => true, 
    'type' => 'plain' 
    ); 

    if ($wp_rewrite->using_permalinks()) $pagination['base'] = user_trailingslashit(trailingslashit(remove_query_arg('s', get_pagenum_link(1))) . 'page/%#%/', 'paged'); 
if (!empty($wp_query->query_vars['s'])) $pagination['add_args'] = array('s' => get_query_var('s')); 
echo paginate_links($pagination); 
} 

function portafolio_posts_per_page($query) { 
    if ($query->query_vars['post_type'] == 'portafolio') $query->query_vars['posts_per_page'] = 10; 
return $query; 
} 
if (!is_admin()) add_filter('pre_get_posts', 'portafolio_posts_per_page');  

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

http://wp.tutsplus.com/tutorials/custom-post-type-pagination-chaining-method/

0
<?php 

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
query_posts(array(
    'post_type' => 'portfolio', 
    'paged' => $paged, 
    'caller_get_posts' => 1, 
    'posts_per_page' => T_Panel('portfolio_page_num') 
)); 
if (have_posts()) : 
    while (have_posts()) : the_post(); 
     // your content loop her 
    endwhile; 
    wp_reset_query(); 
endif; 

?> 
Смежные вопросы