it-source

워드 프레스 사용자 지정 게시 유형 범주

criticalcode 2023. 10. 13. 22:16
반응형

워드 프레스 사용자 지정 게시 유형 범주

안녕하세요. 워드프레스에서 맞춤형 포스트 타입을 사용하고 있습니다.이 사용자 지정 게시물 유형을 다음과 같이 등록합니다.

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

지금까지 잘 되고 있습니다.그런데 카테고리와 태그 페이지에 문제가 생겼습니다.제가 1면에 전화하면 모든 것이 문제가 없고 페이지를 통해 정확한 결과를 얻을 수 있습니다.

그리고 페이지 URL을 호출하면 /category/mycat/page/2 a404가 표시됩니다.하지만 분명히 게시물이 있을 겁니다.카테고리 내에 커스텀 타입의 게시물이나 정상적인 게시물이 있어도 상관없습니다.query_posts()에 대한 매개 변수가 올바르지 않다고 가정하지만...

$wp_query->max_num_pages 값이 잘못된 것 같습니다.하지만 왜 그랬을까?분류를 올바르게 등록하고 있습니까?(사용자 지정 게시물 유형에 범주 및 태그를 사용하는 것을 선호합니다.

어떻게 해야할지 생각해보셨나요?정말 고마워.

저는 방금 똑같은 문제에 부딪혔지만 어디에서도 해결책을 찾을 수 없었습니다!인터넷은 이 주제에 대한 자료들로 가득 차 있지만, 이 문제에 대한 정답을 제공하는 자료는 없었습니다.

여기 검색하는 사람들을 위한 정답이 있습니다.아래 코드를 함수에 넣습니다.당신의 테마의 루트 디렉토리에 있는 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');

모든 크레딧은 Wordpress.com 에 이 글을 올린 Mike에게 전달됩니다.건배!

다음 내용을 추가해야 합니다.

'paged' => get_query_var('paged')

$args로 보내주시면 페이징이 괜찮으실 겁니다.

더보기

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

언급URL : https://stackoverflow.com/questions/4951537/wordpress-custom-post-type-categories

반응형