我正在使用:
我注册了自定义分类(目录)
<?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
)
);
}
?>
然后我为税收创建了一个新文件 - &gt;的分类法catalog.php
在此文件中,我从指定目录( tax )查询所有产品(自定义帖子类型):
<?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错误。
我已经刷新了固定链接。
有什么想法解决这个问题吗?感谢
答案 0 :(得分:2)
将它放入你的&#34; functions.php&#34;然后重新生成永久链接。 它对我有用!
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');
关键是要更换&#34; paged&#34;到&#34;页面&#34;进入自定义分类法的重写规则。
这是我在这里的第一个贡献。希望我帮助你。
答案 1 :(得分:1)
一旦我遇到了这方面的问题,并且通过拔头发将艰难的时间传递给小时。我用谷歌搜索,并没有找到任何关于这些主题的具体解决方案。我找到了几个天才&#39;文章,但他们并不满足我的问题。实际上,自定义分类存档页面分页取决于相关函数的参数的某些设置。所以我实际上是在这里分享我对解决分类归档分页问题的想法。
自定义分类存档页面分页所需的五件事情完美无缺:
(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 ) );
请记住在posts_per_page
参数数组中使用paged
和new WP_Query($arg)
参数。
如果未设置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
列表。
如果你在javascript或jquery的帮助下使用bootstrap inject pagination
类到ul
,那么将输出一个漂亮的花式分页。
希望您现在可以在分类法归档模板中享受分页,而不会出现任何404问题: - )
答案 2 :(得分:1)
帮助我的是设置&#34;博客页面最多显示&#34;在阅读设置为1.然后它工作。
使用默认值10时,它会在第2页上引发404错误。在第1页上,它完美无缺。
因此,如果这样做,解决方案是将&#34;博客页面最多只显示&#34; 为1,仅针对您需要的分类或类别。你应该放在 functions.php 里面的代码在这里:https://forums.envato.com/t/wordpress-custom-page-type-taxonomy-pagination/76549/12
答案 3 :(得分: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);
答案 4 :(得分: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();?>
答案 5 :(得分:0)
当您创建任何CPT时,您需要添加此功能。
flush_rewrite_rules();
它将管理/调整/重新分配您的记忆。1: Add this function : flush_rewrite_rules();
2:Your pagination function (wp_pagenavi()) will call just below the endwhile;
我相信,你的分页会起作用,让我知道它是否会起作用。