WordPress的。为什么分页不能与/%postname%这样的固定链接一起使用但是可以使用默认URL?

时间:2014-07-28 12:28:06

标签: wordpress function pagination http-status-code-404

我有自定义帖子类型。 永久链接看起来像/%postname%

我的CPT功能:

function cpt_lyrics() {

$labels = array(
    'name'                => _x( 'Lyrics', 'Post Type General Name', 'Lyrics' ),
    'singular_name'       => _x( 'Lyrics', 'Post Type Singular Name', 'Lyrics' ),
    'menu_name'           => __( 'Lyrics', 'Lyrics' ),
    'parent_item_colon'   => __( 'Parent Lyrics:', 'Lyrics' ),
    'all_items'           => __( 'All Lyrics', 'Lyrics' ),
    'view_item'           => __( 'View Lyrics', 'Lyrics' ),
    'add_new_item'        => __( 'Add New Lyrics', 'Lyrics' ),
    'add_new'             => __( 'Add New', 'Lyrics' ),
    'edit_item'           => __( 'Edit Lyrics', 'Lyrics' ),
    'update_item'         => __( 'Update Lyrics', 'Lyrics' ),
    'search_items'        => __( 'Search Lyrics', 'Lyrics' ),
    'not_found'           => __( 'Not found', 'Lyrics' ),
    'not_found_in_trash'  => __( 'Not found in Trash', 'Lyrics' ),
);
$args = array(
    'label'               => __( 'lyrics', 'Lyrics' ),
    'description'         => __( 'Lyrics Name', 'Lyrics' ),
    'labels'              => $labels,
    'supports'            => array( 'title', 'editor', 'excerpt', 'comments', 'page-attributes', 'post-formats', ),
    'taxonomies'          => array( 'bands', 'albums' ),
    'hierarchical'        => true,
    'public'              => true,
    'show_ui'             => true,
    'show_in_menu'        => true,
    'show_in_nav_menus'   => true,
    'show_in_admin_bar'   => true,
    'menu_position'       => 7,
    'menu_icon'           => '',
    'can_export'          => true,
    'has_archive'         => true,
    'exclude_from_search' => false,
    'publicly_queryable'  => true,
    'capability_type'     => 'page',
);
register_post_type( 'lyrics', $args );
}

分页功能有效,但它显示如下链接:domain.com/page/2,我收到错误404。 但网址可在以下网址获得:domain.com/?page=2。 为什么会这样?

3 个答案:

答案 0 :(得分:0)

您需要在循环上方添加分页查询,以便我认为自定义帖子类型的分页工作正常。

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

query_posts('posts_per_page=3&paged=' . $paged); 
?>

if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } 
elseif ( get_query_var('page') ) { $paged = get_query_var('page'); } 
else { $paged = 1; }  
query_posts('posts_per_page=12&post_type=lyrics&paged=' . $paged);

答案 1 :(得分:0)

你也可以使用分页插件。 https://wordpress.org/plugins/wp-paginate/ 要么 https://wordpress.org/plugins/wp-smart-pagination/ 比如更多的插件..

答案 2 :(得分:0)

可能会对某人有用...将其添加到functions.php:

function my_post_queries( $query ) { 
if (!is_admin() && $query->is_main_query()){
$taxonomies = array ('YOUR_TAXONOMY');
    if(is_tax($taxonomies) || is_home())  {         
        $query->set ('post_type', 'YOUR_POST_TYPE');
    }
  }
}
add_action( 'pre_get_posts', 'my_post_queries' );