用作首页的自定义帖子类型中的分页问题

时间:2013-05-10 作者:Ayaz Malik

我正在处理一个带有自定义帖子类型的主题
目前的问题是,我正在将布局文件保存在一个名为templates的文件夹中。。在头版。php我正在使用选项检查来查看用户从主题面板中选择了哪种类型的布局。。并包括该文件
目前在自定义帖子类型模板中,分页不起作用。。我正在使用此循环:

    global $wp_query;

$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query(\'post_type=portfolio&paged=\'.$paged);
                if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post(); 
    ......
    <?php endwhile; endif; ?>
    ..    
    <?php 
                if (function_exists("pagination")) {
        pagination($additional_loop->max_num_pages);}
            ?>  
    <?php $wp_query = null; $wp_query = $temp;?>
分页显示,但链接显示为/page/2/。。运行时显示404。。在我看来,它显示了主查询的第2页,因为没有多少帖子添加了404。

我也尝试过:

$paged = 1;  
if ( get_query_var(\'paged\') ) $paged = get_query_var(\'paged\');  
if ( get_query_var(\'page\') ) $paged = get_query_var(\'page\');    
没用
我的自定义后期注册结构:

function my_custom_post_portfolio() {
    $labels = array(
        \'name\'               => _x( \'Portfolio\', \'post type general name\' ),
        \'singular_name\'      => _x( \'Portfolio\', \'post type singular name\' ),
        \'add_new\'            => _x( \'Add New\', \'book\' ),
        \'add_new_item\'       => __( \'Add New Item\' ),
        \'edit_item\'          => __( \'Edit Item\' ),
        \'new_item\'           => __( \'New Portfolio Item\' ),
        \'all_items\'          => __( \'All Items\' ),
        \'view_item\'          => __( \'View Items\' ),
        \'search_items\'       => __( \'Search Portfolio\' ),
        \'not_found\'          => __( \'No Portfolio found\' ),
        \'not_found_in_trash\' => __( \'No Portfolio found in the Trash\' ), 
        \'parent_item_colon\'  => \'\',
        \'menu_name\'          => \'Portfolio\'
    );
    $args = array(
        \'labels\'        => $labels,
        \'description\'   => \'Holds our Portfolio and product specific data\',
        \'public\'        => true,
        \'menu_position\' => 5,
        \'supports\'      => array( \'title\', \'editor\', \'thumbnail\', \'excerpt\', \'comments\' ),
        \'has_archive\'   => true,
        \'rewrite\' => array( \'slug\' => \'portfolio\', \'with_front\' => true ),
        \'_builtin\' =>  false, // It\'s a custom post type, not built in!
        \'query_var\' => true,
        \'taxonomies\' => array(\'portfolio\', \'post_tag\') // this is IMPORTANT
    );

    register_post_type( \'Portfolio\', $args );   
}
add_action( \'init\', \'my_custom_post_portfolio\' );  
感谢您的帮助!谢谢:)

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

很难百分之百肯定地说,但我认为问题在于你对query_posts. 以下是我认为正在发生的事情:

主查询使用默认参数运行,并加载您的页面query_posts

  • 您可以根据被删除的主查询生成分页,您可以单击一个链接,而未被删除的主查询会尝试对您想要的内容进行排序(请记住query_posts 直到WordPress加载模板并失败,并且您得到404,才能运行query_posts. 如果你认为你找到了一个合法的使用场所query_posts 你几乎肯定错了。核心是唯一应该运行该功能的东西。

    如果必须更改主查询,请在pre_get_posts.

    function alter_query_wpse_99042($qry) {
      $qry->set(\'posts_per_page\',6);
      $qry->set(\'post_type\',\'portfolio\');
    }
    add_action(\'pre_get_posts\',\'alter_query_wpse_99042\');
    
    然而,根据您的帖子类型注册设置,WordPress似乎应该为您构建存档。我不知道为什么您需要构建一个查询,除了可能需要更改posts_per_page. You can customize the generated archive by making a file named archive-portfolio.php and saving it to the theme directory. single-portfolio.php 对单立柱类型显示执行相同操作。这些文件将自动加载。

  • 结束

    相关推荐

    wp_list_categories pagination

    我想知道我是否可以为wp\\U list\\U类别分页?我尝试了paginate\\u链接,但运气不好。还是有好的解决方法?非常感谢。<?php $orderby = \'name\'; $show_count = 0; $pad_counts = 0; $hierarchical = 1; $taxonomy = \'categories\'; $title = \'\'; $exclude = \