2010-07-24 254 views
5

我想在WordPress中使用wp pagenavi插件和自定義帖子類型(投資組合頁面)分頁工作,我沒有運氣。WordPress的自定義帖子類型

這裏是我的投資組合的一個精簡版:

<?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(); ?> 

我有我的永久鏈接設置爲:

/%postname%/ 

,我已經重新保存它們。

當我到了我的投資組合的第二頁時,我收到了一個404頁面。任何想法爲什麼發生這種情況?

感謝您的幫助。

+3

這是在這裏解決了,如果別人跑進了同樣的問題:http://wordpress.org/support/topic/429149?replies=1#post-1616810 – Joe 2010-07-27 04:35:07

+0

爲什麼不把這個答案和標記已被接受? – Kev 2011-07-22 21:49:21

回答

0

我曾與WordPress的分頁出了問題,而無法修復,所以我滾我自己的WP_Query類的extention - >MF_Query

到位WP_Query的只需使用MF_Query,然後用$your_query->next("Next Page")$your_query->prev("Previous Page")添加下一個和以前的鏈接(文本有默認值,所以沒有需要的參數。

這是要求你直接通過你的參數傳遞給類初始化爲一個陣列,並列於你有標準WP_Query的各種選項。

這是一個有點哈克,但它的作品!

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 2014-05-05 23:45:13

0

這是我去分頁變量傳遞到導航的CPT查詢的方式,你可以有這樣不同的方法,但這是唯一一個它使用WP_QUERY爲我工作。不需要任何導航插件,只需標準的導航鏈接。

修改完迴環文件添加到您的functions.php這是將制定出網頁上的變量你應該把這個線在這裏你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 
    ?> 

之前。

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; 

?> 
相關問題