首页 文章

Wordpress自定义帖子类型类别

提问于
浏览
6

嘿 . 我在wordpress中使用自定义帖子类型 . 我注册这样的自定义帖子类型:

register_post_type("lifestream", array(
            'label' => 'Lifestream',
            'public' => true,
            'hierarchical' => true,
            'menu_position' => 5,
            'supports' => array('title','editor','author','thumbnail','comments','custom-fields'),
            'taxonomies' => array('category','post_tag'),
            'query_var' => true,
            'publicly_queryable' => true,
            'exclude_from_search' => false,
            'caller_get_posts' => 1

        ));
        register_taxonomy_for_object_type('category', 'lifestream');
        register_taxonomy_for_object_type('post_tag', 'lifestream');

在主题(循环模板)中我喜欢组合帖子和我的自定义帖子类型,因为我使用query_posts()与这些参数:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
    'post_type' => array('post', 'lifestream'),
    'paged' => $paged,
    'cat' => $wp_query->get('cat'),
    'tag' => $wp_query->get('tag'),
    'year' => $wp_query->get('year'),
    'monthnum' => $wp_query->get('monthnum'),
    'post_status' => 'publish',
    'showposts' => 3
);
query_posts($args); 


# the loop     
while ( have_posts() ) : the_post(); 
# markup
endwhile;


if($wp_query->max_num_pages > 1): 
# next_posts_link / previous_posts_link
endif;

wp_reset_query();

到目前为止这是有效的 . 但是,我遇到了类别和标签页面的问题 . 如果我打电话给首页一切都很好,我可以通过页面分页得到正确的结果 .

而且,如果我拨打分页网址,例如/ category / mycat / page / 2抛出404 . 但绝对应该是帖子 . 无论该类别中是否有自定义类型帖子或男性帖子 . 我想我的query_posts()参数不正确,但不知道......

似乎$ wp_query-> max_num_pages具有错误的值 . 但为什么?我是否正确注册了分类法(我喜欢使用自定义帖子类型的类别和标签)?

你有什么想法怎么办?非常感谢!

3 回答

  • 0

    我刚遇到完全相同的问题,无法在任何地方找到解决方案!互联网上充满了关于该主题的资源,但没有一个提供正确的答案 .

    这是搜索任何人的正确答案 . 将以下代码放在主题根目录中的 functions.php 中 .

    function init_category($request) {
        $vars = $request->query_vars;
        if (is_category() && !is_category('Blog') && !array_key_exists('post_type', $vars)) :
            $vars = array_merge(
                $vars,
                array('post_type' => 'any')
            );
            $request->query_vars = $vars;
        endif;
        return $request;
    }
    add_filter('pre_get_posts', 'init_category');
    

    所有学分都发送到Mike,发布于Wordpress.com . 干杯!

  • 0

    请务必添加以下内容:

    'paged' => get_query_var('paged')
    

    到你的$ args,它应该接受分页好 .

    更多here

  • 2

    在archive.php中尝试使用以下内容:

    query_posts( array(
      'post_type' => 'lifestream',
      'posts_per_page' => 6,
      'orderby' => 'menu_order',
      'orderby' => 'date',
      'order' => 'ASC',
      'paged' => '' . get_query_var('paged')
    ));
    
    if ( have_posts() ) : while ( have_posts() ) : the_post();
    
    endwhile; else:
    endif;
    

    对于我使用的下一页和上一页链接:

    next_posts_link('Older Entries', $wp_query->max_num_pages);
    previous_posts_link('Newer Entries', $wp_query->max_num_pages);
    

相关问题