2012-02-02 15 views
1

WordPressでカスタムポストタイプ(「ns_news_article」と呼ばれ、Magic Fieldsから生成されたもの)が登録され、動作しています。これにより、ドメインの後ろに「カテゴリ/ニュース」を追加するためのURLが書き換えられます(例: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(); 

は、2行目は、リストのように複数のページを表示するときにページネーション404問題の世話をするが、単一のポストを表示しようとすると、その後404エラーが発生します。私がこれを取り除くと、あなたは投稿を見ることができますが、ページネーションは機能しません。

これを修正できますか、別の方法で行う必要がありますか?

答えて

0

私は最近カスタムポストタイプのページネーションを行っています。これは私のやり方です。カスタムの投稿タイプを「カスタム」としましょう。

  1. page-customp.phpというテーマでファイルを作成します。次に、 "Customp"というタイトルの空のページを公開します。今、www.yourdomain.com/custompにアクセスすると、page-customp.phpをテンプレートとして使用しているページが表示されます。ここでは、このページを使用してカスタム投稿とページ設定を表示します。

  2. 場所your page-customp.phpファイルでこのコード:あなたのfunctions.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. この:

    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

私はdidnの申し訳ありません」私のコードを正しくフォーマットすることはできません:) – zuzuleinen

+0

8つのスペースでインデントする必要があります(http://meta.stackexchange.com/a/3793/245388を参照) – Sven

関連する問題