2012-02-02 112 views
1

我在WordPress中使用自定義帖子類型(稱爲「Magic_fields」生成的「ns_news_article」),它們已註冊並正在工作。這將重寫URL以在域後添加「category/news」(如:www.mydomain.com/category/news/custom-post-1)。我必須在那裏有「假目錄」。WP自定義帖子類型分頁/ 404錯誤

我有這樣的的functions.php:觀察名單的多個頁面時

add_rewrite_rule("[ns_news_article]" . '$', "index.php?pagename=[ns_news_article]", "top"); 
add_rewrite_rule("[ns_news_article]" . '/page/([0-9])*/?', "index.php?pagename=[ns_news_article]" . '&paged=$matches[1]', "top"); 
global $wp_rewrite; 
$wp_rewrite->flush_rules(); 

第二行需要分頁404問題的關心,但隨後試圖查看單個帖子的時候給了404錯誤。如果我擺脫這一點,你可以查看帖子,但分頁不起作用。

我能解決這個問題還是應該以另一種方式完成?

回答

0

我最近完成了自定義的帖子類型分頁,所以這就是我所做的。假設您的自定義帖子類型稱爲「customp」。

  1. 在您的主題中創建一個文件page-customp.php。然後發佈一個帶有「Customp」標題的空白頁面。現在,當您訪問www.yourdomain.com/customp時,您將看到一個使用page-customp.php作爲模板的頁面。現在我們將使用此頁面顯示自定義帖子和分頁。

  2. 將此代碼放在your page-customp.php文件:

    $paged = 1; 
    
    $postsPerPage = 5; 
    
    if (get_query_var('paged')) $paged = get_query_var('paged'); 
    
    if (get_query_var('page')) $paged = get_query_var('page'); 
    
    query_posts('&post_type=customp&paged=' . $paged . '&posts_per_page='.$postsPerPage); 
    
    while (have_posts()) : the_post(); 
    
        the_title(); 
        echo get_the_excerpt(); 
    
    endwhile; 
    
    customp_paginate(); 
    
  3. 在你functions.php文件的地方是:

    function customp_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' => 'list', 
        'prev_text' => '«', 
        'next_text' => '»', 
    ); 
    
        if ($wp_rewrite->using_permalinks()) 
        $pagination['base'] = user_trailingslashit(trailingslashit(remove_query_arg('s', get_pagenum_link(1))) . 'page/%#%/', 'paged'); 
    
        if (!empty($wp_query) && $pagination['total'] != 1) { 
        $pagination['add_args'] = array('s' => get_query_var('s')); 
    
        echo "<div class='paginate'><strong>Pages:</strong>" . paginate_links($pagination) . "</div>"; 
        } 
    
    } 
    

我希望它能幫助:)

+0

抱歉,我沒」 t設法正確地格式化我的代碼:) – zuzuleinen 2012-02-03 10:31:09

+0

您需要用8個空格縮進(請參閱http://meta.stackexchange.com/a/3793/245388) – Sven 2015-05-27 10:30:13

相關問題