分类术语归档默认循环返回1条记录,而不是8条

时间:2014-01-10 作者:drake035

我有一个名为“book”的自定义帖子类型和一个名为“books”的自定义CPT分类法。这种分类法的一个术语是“接受你自己”。以下是“接受你自己”归档页面的代码(URL:my\\u site/books/accepting yourself/):

if ( have_posts() ) : 
    while ( have_posts() ) : the_post(); 
    echo get_the_title();
    endwhile;
endif;
这将返回自定义分类法“books”中的所有“book”帖子,即8篇帖子。相反,它只返回一个。

以防万一,下面是定义自定义帖子类型和custon分类法的代码:

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
CUSTOM POST TYPE : BOOK
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

function my_custom_post_book() {
    $labels = array(
        \'name\'               => _x( \'Books\', \'post type general name\' ),
        \'singular_name\'      => _x( \'Book\', \'post type singular name\' ),
        \'add_new\'            => _x( \'Add New\', \'book\' ),
        \'add_new_item\'       => __( \'Add New Book\' ),
        \'edit_item\'          => __( \'Edit Book\' ),
        \'new_item\'           => __( \'New Book\' ),
        \'all_items\'          => __( \'All Book\' ),
        \'view_item\'          => __( \'View Book\' ),
        \'search_items\'       => __( \'Search Book\' ),
        \'not_found\'          => __( \'No books found\' ),
        \'not_found_in_trash\' => __( \'No books found in the Trash\' ), 
        \'parent_item_colon\'  => \'\',
        \'menu_name\'          => \'Books\'
    );
    $args = array(
        \'labels\'        => $labels,
        \'description\'   => \'Holds our books specific data\',
        \'public\'        => true,
        \'menu_position\' => 4,
        \'supports\'      => array( \'title\', \'editor\', \'thumbnail\', \'excerpt\', \'comments\', \'custom-fields\'),
        \'has_archive\'   => true,
    );
    register_post_type( \'book\', $args );    
}
add_action( \'init\', \'my_custom_post_book\' );

function my_updated_messages_book( $messages ) {
    global $post, $post_ID;
    $messages[\'book\'] = array(
        0 => \'\', 
        1 => sprintf( __(\'Book updated. <a href="%s">View book</a>\'), esc_url( get_permalink($post_ID) ) ),
        2 => __(\'Custom field updated.\'),
        3 => __(\'Custom field deleted.\'),
        4 => __(\'Book updated.\'),
        5 => isset($_GET[\'revision\']) ? sprintf( __(\'Book restored to revision from %s\'), wp_post_revision_title( (int) $_GET[\'revision\'], false ) ) : false,
        6 => sprintf( __(\'Book published. <a href="%s">View book</a>\'), esc_url( get_permalink($post_ID) ) ),
        7 => __(\'Book saved.\'),
        8 => sprintf( __(\'Book submitted. <a target="_blank" href="%s">Preview book</a>\'), esc_url( add_query_arg( \'preview\', \'true\', get_permalink($post_ID) ) ) ),
        9 => sprintf( __(\'Book scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview book</a>\'), date_i18n( __( \'M j, Y @ G:i\' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
        10 => sprintf( __(\'Book draft updated. <a target="_blank" href="%s">Preview book</a>\'), esc_url( add_query_arg( \'preview\', \'true\', get_permalink($post_ID) ) ) ),
    );
    return $messages;
}
add_filter( \'post_updated_messages\', \'my_updated_messages_book\' );


/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
CUSTOM BOOK TAXONOMY
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

$labels = array(
    \'name\'                          => \'Books\',
    \'singular_name\'                 => \'Book\',
    \'search_items\'                  => \'Search Books\',
    \'popular_items\'                 => \'Popular Books\',
    \'all_items\'                     => \'All Books\',
    \'parent_item\'                   => \'Parent Book\',
    \'edit_item\'                     => \'Edit Book\',
    \'update_item\'                   => \'Update Book\',
    \'add_new_item\'                  => \'Add New Book\',
    \'new_item_name\'                 => \'New Book\',
    \'separate_items_with_commas\'    => \'Separate Books with commas\',
    \'add_or_remove_items\'           => \'Add or remove Books\',
    \'choose_from_most_used\'         => \'Choose from most used Books\'
    );

$args = array(
    \'label\'                         => \'Books\',
    \'labels\'                        => $labels,
    \'public\'                        => true,
    \'hierarchical\'                  => true,
    \'show_ui\'                       => true,
    \'show_in_nav_menus\'             => true,
    \'args\'                          => array( \'orderby\' => \'term_order\' ),
    \'rewrite\'                       => array( \'slug\' => \'books\', \'with_front\' => false ),
    \'query_var\'                     => true
);

register_taxonomy( \'books\', \'book\', $args );

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

您的代码应该将CPT注册挂钩到init, 虽然我不知道这是否是问题的一部分。

您的代码相对简单,当我测试它时,它对我来说运行良好。

除非您更改了主查询,否则/books/accepting-yourself 存档页面您发布的循环应返回:

在你的“接受你自己”一词中,你在“book”CPT中发布的帖子仅限于你在“Settings->Reading”中“Blog pages show at most”(博客页面最多显示)下选择的数量。听起来好像第4项才是问题所在。如果您可以验证这不是它,那么我的下一个猜测是,有什么东西已经在改变主查询并设置posts_per_page 参数到1-- 可能是针对pre_get_posts

如上所述,我测试了您的代码,没有发现任何意外行为。没有更多的信息,我只有这些。如果你能在问题中编辑更多细节,我会看看我还能做些什么。

SO网友:Brad Dalton

使用本机读取设置的问题是,它会影响主循环。

您可以使用pre\\u get\\u posts和conditional tag 要控制CPT或分类法归档中显示的帖子数量,请执行以下操作:

您可以使用CPT或分类法存档页的条件修改此代码:

add_action( \'pre_get_posts\', \'wpsites_taxonomy_archive_limit\' );
function wpsites_taxonomy_archive_limit( $query ) {

if( $query->is_main_query() && !is_admin() && is_tax( \'books\' ) ) {
    $query->set( \'posts_per_page\', \'8\' );
}

}
上面的代码显示了自定义分类法类型存档book中的8篇文章。

对于自定义post类型的存档,请使用以下内容:

add_action( \'pre_get_posts\', \'wpsites_cpt_archive_limit\' );
function wpsites_cpt_archive_limit( $query ) {

if( $query->is_main_query() && !is_admin() && is_post_type_archive( \'book\' ) ) {
    $query->set( \'posts_per_page\', \'8\' );
}

}
来源:http://codex.wordpress.org/Conditional_Tags#A_Taxonomy_Page

结束

相关推荐

Order custom taxonomy by date

我有一个名为series的自定义分类法。我想有一个页面,其中列出了所有系列与最新的顶部。系列鱼类系列关于狗的系列文章我创建了一个分类学系列。php,其中列出了各个系列,但我要http://example.com/series. 我有一个404。我是否需要在主题上创建单独的页面?列出所有按日期排列的系列?