2012-06-19 162 views
4

我使用:WordPress的 - 自定义分类分页

  • 的WordPress 3.4
  • WP-PageNavi 2.82

我注册自定义分类(目录

<?php 

add_action('init', 'pca_register_taxonomy', 0); 

function pca_register_taxonomy() 
{ 
    register_taxonomy('catalog', null, 
     array(
      'label' => __('Catalogs', __), 
      'labels' => array(
       'name' => __('Catalogs', __), 
       'singular_name' => __('Catalog', __), 
       'search_items' => __('Search Catalogs', __), 
       'popular_items' => __('Popular Catalogs', __), 
       'all_items' => __('All Catalogs', __), 
       'parent_item' => __('Parent Catalog', __), 
       'parent_item_colon' => __('Parent Catalog', __), 
       'edit_item' => __('Edit Catalog', __), 
       'update_item' => __('Update Catalog', __), 
       'add_new_item' => __('Add New Catalog', __), 
       'new_item_name' => __('New Catalog Name', __), 
       'separate_items_with_commas' => __('Separate catalogs with commas', __), 
       'add_or_remove_items' => __('Add or remove catalogs', __), 
       'choose_from_most_used' => __('Choose from the most used catalogs', __), 
       'menu_name' => __('Catalogs', __) 
      ), 
      'public' => true, 
      'show_in_nav_menus' => true, 
      'show_ui' => true, 
      'show_tagcloud' => false, 
      'hierarchical' => true, 
      'query_var' => true, 
      'rewrite' => array(
       'slug' => 'catalog', 
       'with_front' => true, 
       'hierarchical' => true 
      ), 
      'capabilities' => array(
       'manage_terms', 
       'edit_terms', 
       'delete_terms', 
       'assign_terms' 
      ) 
     ) 
    ); 
} 

?> 

我注册自定义帖子类型(产品

<?php 

add_action('init', 'pca_register_post_type'); 

function pca_register_post_type() 
{ 
    register_post_type('product', 
     array(
      'label' => __('Products', __), 
      'labels' => array(
       'name' => __('Products', __), 
       'singular_name' => __('Product', __), 
       'add_new' => __('Add New', __), 
       'add_new_item' => __('Add New Product', __), 
       'edit_item' => __('Edit Product', __), 
       'new_item' => __('New Product', __), 
       'all_items' => __('All Products', __), 
       'view_item' => __('View Product', __), 
       'search_items' => __('Search Products', __), 
       'not_found' => __('No products found', __), 
       'not_found_in_trash' => __('No products found in Trash', __), 
       'parent_item_colon' => '', 
       'menu_name' => __('Products', __) 
      ), 
      'description' => '', 
      'public' => true, 
      'exclude_from_search' => false, 
      'publicly_queryable' => true, 
      'show_ui' => true, 
      'show_in_nav_menus' => true, 
      'show_in_menu' => true, 
      'show_in_admin_bar' => true, 
      'menu_position' => 20, 
      'capability_type' => 'post', 
      'meta_cap' => true, 
      'hierarchical' => false, 
      'supports' => array(
       'title', 
       'editor', 
       'thumbnail', 
       'page-attributes', 
       'post-formats' 
      ), 
      'taxonomies' => array('catalog'), 
      'has_archive' => false, 
      'rewrite' => array(
       'slug' => 'products', 
       'with_front' => true, 
       'feeds' => false, 
       'pages' => true 
      ), 
      'query_var' => true, 
      'can_export' => true 
     ) 
    ); 
} 

?> 

然后,我创建一个新的文件对税收 - >分类法catalog.php

在这个文件中,我所有产品进行查询指定目录(自定义后类型)(税收):正确显示

<?php 

$paged = get_query_var('paged'); 
$paged = ($paged) ? $paged : 1; 

$products = new WP_Query(array(
    'catalog' => $catalog_data->slug, // $catalog_data is the current taxonomy (woman) 
    'post_type' => 'product', 
    'posts_per_page' => 12, 
    'paged' => $paged 
)); 

?> 

<?php while ($products->have_posts()) : $products->the_post(); ?> 
// Show title, content ... everything ok 
<?php endwhile; ?> 

<?php if (function_exists('wp_pagenavi')) wp_pagenavi(array('query' => $products)); ?> 
<?php wp_reset_postdata(); ?> 

分页但是当我点击第2页或超过我有一个404错误。

  • 作品 - > mywebsite.com/catalog/woman
  • 作品不是 - > mywebsite.com/catalog/woman/page/2

我已经刷新固定链接。

任何想法解决这个问题?感谢

+2

你解决了你的问题吗?如果是,请分享。谢谢 – Khodadad

回答

0

基本上就

get_query_var('page') 

从工作代码保持页码

global $query_string; 

$page_index = max(1, get_query_var('page')); 

parse_str($query_string, $queryParams); 
$queryParams['paged'] = $page_index; 
$queryParams['posts_per_page'] = $posts_per_page; 
query_posts($queryParams); 
+0

仍然一样,我真的不明白什么是错的 – Fredmat

+0

我刚刚尝试使用默认永久链接和http://website.com/?catalog=woman&page=2工程contrariwise http://website.com/?catalog=woman&paged = 2不是 – Fredmat

+0

据我所知wp-pagenavi不适用于重新创建的WP_Query。 你尝试使用$ query_string吗? –

0

使用query_posts,而不是wp_query。它应该工作。

这是我的代码。

<?php    

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 

      $args = array(

      'paged' => $paged, 

      'orderby' => 'asc', 

       'tax_query' => array(

        array(

         'taxonomy' => "$term->taxonomy", 

         'terms' => "$term->name", 

         'field' => 'slug' 

        ) 

       ) 

      ); 

      $query = new WP_Query($args); 
      if($query->have_posts()) : 
// your code 
?> 

<?php endwhile; endif; 
      wp_pagenavi();?> 
0

把它放到你的“functions.php”中,然后重新生成固定链接。 它适用于我!

function taxonomy_rewrite_fix($wp_rewrite) { 
    $r = array(); 
    foreach($wp_rewrite->rules as $k=>$v){ 
     $r[$k] = str_replace('catalog=$matches[1]&paged=','catalog=$matches[1]&page=',$v); 
    } 
    $wp_rewrite->rules = $r; 
} 
add_filter('generate_rewrite_rules', 'taxonomy_rewrite_fix'); 

关键是要将“paged”替换为“page”为您的自定义分类的重写规则。

这是我的第一个贡献。希望我能帮助你。

0


当您创建任何CPT时,您需要添加此功能。

flush_rewrite_rules();
它会管理/调整/重新分配你的记忆。
所以请添加这行代码将工作。
预防措施。
1: Add this function : flush_rewrite_rules();
2:Your pagination function (wp_pagenavi()) will call just below the endwhile;
我确定,你的分页会起作用,并让我知道它是否无效。
感谢你。

1

一旦我遇到了这个问题,并通过拉扯头发通过困难时间hrs小时。我搜索了一下,没有找到关于这些主题的具体解决方案。我发现了几个人才的文章,但他们不满足我的问题。实际上自定义分类归档页面分页取决于相关函数参数的一些设置。所以我实际上是在这里分享我对解决分类归档分页问题的想法。你需要自定义分类存档页面分页完美的工作

五件事:

(1)不要把exclude_from_search参数键register_post_type参数参数或 如果提及设置'exclude_from_search' => false。默认情况下,如果未提及,则设置为false

(2)将与自定义后类型来使用分类设定 'taxonomies' => 'custom_taxonomy_name'作为register_post_type参数参数或register_taxonomy_for_object_type()直接
使用。 定制分类标准仍需要注册register_taxonomy()

(3)虽然内new WP_Query ($args)

i) If not set in admin `static front page` use before `new WP_Query($args)` 

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
and use $query = new WP_Query(array('paged' => $paged)); 

ii) If set in admin static front page use before 'new WP_Query($args)' 
    $paged = (get_query_var('page')) ? get_query_var('page') : 1; 
    and use $query = new WP_Query(array('page' => $paged)); 

查询记住在new WP_Query($arg)参数数组使用posts_per_pagepaged参数。 如果没有设置static front page那么你应该使用page参数new WP_Query ($arg)参数数组

(4)使用WordPress paginate_links($args)功能,如下面的例子来呈现档案模板文件分页。

<?php $big = 999999999; // need an unlikely integer 
echo paginate_links(array(
        'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))), 
        'format' => '?paged=%#%', or '/paged=%#%', // if using pretty permalink 
        'current' => max(1, get_query_var('paged')), 
        'total' => $query->max_num_pages)); // Here $max_num_pages is the properties of new WP_Query() object . It is total number of pages. Is the result of $found_posts/$posts_per_page 
?> 

(5)paginate_links()函数输出的ul li列表与page-numbers类。 如果你使用引导注入pagination类到ul与javascript或jquery的帮助下,将会输出一个漂亮的幻想分页。

希望你现在可以在分类存档模板分页没有任何问题404 :-)

+0

我有完全相同的问题,但仍然得到404页。 – Khodadad

0

什么帮助我在阅读设置来设置“博客网页显示最多” 1。然后它的工作原理。

使用默认的10,它会在页面2上抛出404错误。在第1页上它是完美的。

因此,鉴于此原理,解决方法是将“博客页面最多显示”设置为1,仅限于您需要的那些分类法或类别。你应该把代码放在functions.php这里:https://forums.envato.com/t/wordpress-custom-page-type-taxonomy-pagination/76549/12