2012-02-02 86 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

相关问题