WordPress的 - 自定义分类分页(Wordpress - Custom Taxonomy P

2019-06-25 14:49发布

我正在使用:

  • 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

我已经刷新固定链接。

任何想法解决这一问题? 谢谢

Answer 1:

将这个到你“的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');

关键是取代“分页”到“页”到您的自定义分类重写规则。

这是我第一次在这里的贡献。 希望我帮你。



Answer 2:

有一次,我面临的问题这件事,拉头发经过艰难的时刻小时至小时。 我用Google搜索,并没有发现有关话题的任何具体的解决方案。 我发现了几个人才的文章,但他们并没有满足我的问题。 其实自定义分类存档页分页是取决于相关功能参数的一些设置。 所以,我真的要在这里分享我的解决分类归档分页问题的看法。

你需要自定义分类存档页面分页工作完美的五件事:

(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_pagepaged参数在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类。 如果您使用引导注入pagination类的ul与JavaScript的帮助或jQuery和一个漂亮的花式分页将输出。

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



Answer 3:

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

使用默认10,它抛出第2页上的404错误在第1页这一切都完美。

所以,有了这个工程,解决的办法是设置“博客网页显示最多” 1只为那些需要分类或类别。 你应该里面的functions.php代码放在这里: https://forums.envato.com/t/wordpress-custom-page-type-taxonomy-pagination/76549/12



Answer 4:

基本上,这是

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);


Answer 5:

使用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();?>


Answer 6:


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

 flush_rewrite_rules(); 
它将管理/调整/重新分配你的记忆。
所以,请加入这行代码将工作。
预防。
 1: Add this function : flush_rewrite_rules(); 
2:Your pagination function (wp_pagenavi()) will call just below the endwhile;
我敢肯定,你的分页会工作,让我知道,如果它不能正常工作。
感谢您。



文章来源: Wordpress - Custom Taxonomy Pagination