사용자 지정 게시 유형 및 카테고리에 따라 표시에 카테고리 추가
저는 flozo라는 이름의 워드프레스 사이트를 만들고 있습니다.라는 이름의 커스텀 투고 타입이 있습니다.work
각 카테고리에 따라 템플릿에 작품을 표시하고 싶었습니다.
코드는 다음과 같습니다.
<?php
$args = array( 'post_type' => 'work', 'posts_per_page' => 15 );
$loop = new WP_Query( $args );
$count = 0;
echo '<ul>';
while ( $loop->have_posts() ) : $loop->the_post();
$count++;
$class = ($count % 3 == 1) ? 'first' : '';
echo '<li class="'.$class.'">';
echo '<a href="';
the_permalink();
echo '">';
echo '<div class="overlay" style="background-color:'.ot_get_option( 'main_colour' ).';"></div>';
the_post_thumbnail('full');
echo '</a>';
echo '<br />';
echo '<h2><a href="';
the_permalink();
echo '">';
the_title();
echo '</a></h2>';
echo '<div class="entry-content">';
echo limit_words(get_the_excerpt(), '30');
echo '..</div>';
echo '</li>';
endwhile;
echo '</ul>';
?>
추가했습니다.
$args = array( 'post_type' => 'work', 'tag_ID' => 15 ,'posts_per_page' => 15 );
어디에15
카테고리의 ID이지만, 동작하지 않았습니다.
나도 해봤어
<?php
$catquery = new WP_Query( 'cat=15&posts_per_page=3' );
while($catquery->have_posts()) : $catquery->the_post();
?>
<ul class="last-cat">
<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_post_thumbnail(); ?> <p><?php the_title(); ?></p><span><?php echo get_the_date(); ?></span></a></li></ul>
<?php endwhile; ?>
그것도 도움이 안 됐어요
편집:
카테고리 URL은
투고 타입의 등록 코드는 다음과 같습니다.
add_action('init', 'work_register');
function work_register() {
$labels = array(
'name' => _x('Work', 'post type general name'),
'singular_name' => _x('Work Item', 'post type singular name'),
'add_new' => _x('Add New', 'work item'),
'add_new_item' => __('Add New Work Item'),
'edit_item' => __('Edit Work Item'),
'new_item' => __('New Work Item'),
'view_item' => __('View Work Item'),
'search_items' => __('Search Work'),
'not_found' => __('Nothing found'),
'not_found_in_trash' => __('Nothing found in Trash'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'menu_icon' => get_stylesheet_directory_uri() . '/article16.png',
'rewrite' => array( 'slug' => 'work', 'with_front'=> false ), 'capability_type' => 'post',
'hierarchical' => true,
'menu_position' => null,
'supports' => array('title','editor','thumbnail')
);
register_post_type( 'work' , $args );
register_taxonomy("categories", array("work"), array("hierarchical" => true, "label" => "Categories", "singular_label" => "Category", "rewrite" => array( 'slug' => 'work', 'with_front'=> false )));
}
다른 답변은 모두 틀렸습니다. 특히 OP의 답변은 정확하지 않습니다. query_posts
절대 사용해서는 안 됩니다.코덱스에도 기재되어 있기 때문에, 코덱스를 읽어 주세요.또한 기본 쿼리를 사용자 지정 쿼리로 바꾸면 안 됩니다.
해결책은 아래에 설명한 바와 같이 간단하고 올바른 방법입니다.
원래의 회답
여기 몇 가지 결점이 있어요
커스텀 투고 타입에 아카이브를 설정하려면 , 다음의 설정을 실시할 필요가 있습니다.
has_archive
에 대한 파라미터true
커스텀 포스트 타입 등록 인수로 지정합니다.참조페이지와 같은 커스텀 투고 유형을 사용하지 않을 경우
hierarchical
에 대한 파라미터false
이것을 true로 설정하면 Wordpress가 페이지와 마찬가지로 각 투고에 대해 트리를 작성하려고 하기 때문에 투고가 증가함에 따라 백엔드가 상당히 느려집니다.기본 쿼리 대신 사용자 지정 쿼리를 사용하지 마십시오.그것은 항상 더 귀찮고 자원의 낭비이다.사용자 지정 쿼리를 올바르게 사용하는 위치와 시기에 대한 자세한 설명은 이 게시물을 참조하십시오.
이 점은 앞의 점을 확장한 것입니다.기본 쿼리를 변경해야 할 경우
pre_get_posts
그렇게 하기 위해서.이 파라미터는 다음과 같은 정확한 파라미터를 사용합니다.WP_Query
메인 쿼리가 사용하는 바와 같이WP_Query
포스트를 가져옵니다.위의 링크 게시물에 모두 설명되어 있습니다.사용자 지정 쿼리의 주요 결함은 범주, 태그 및 사용자 지정 분류법의 차이를 이해하지 못하는 것입니다.저는 이것에 대해 완전한 투고(여기서 읽을 수 있습니다)를 써, 실제로 코덱스에도 기입했습니다.사용자 정의 분류법을 사용 중이므로 범주 매개 변수가 작동하지 않습니다.커스텀 분류에는 를 사용해야 합니다.
문제를 해결하려면 , 다음의 순서에 따릅니다.
, 그럼 여기에다가 더해져요.
has_achive
할 때 를 지정하고, 을 「 등록」으로 합니다.true
「 」를 설정합니다hierarchical
to " " 。false
커스텀 투고 타입에서도 마찬가지입니다.(커스텀 분류법에 대해서는 설정하지 마십시오.이것에 의해 분류법이 통상의 태그와 같이 동작합니다.)그런 다음 "설정" 아래에 있는 permalink 페이지를 방문하여 "업데이트"를 클릭하여 다시 쓰기 규칙을 수정합니다.
홈페이지를 방문하여 새 규칙이 저장되었는지 확인하십시오.
커스텀 쿼리를 삭제하고 기본 루프로 돌아갑니다.의 ★★★★★★★★★★★★★★★★★.
archive-work.php
이어야 한다if( have_posts() ) { while( have_posts() ) { the_post(); // Your custom markup and template tags } }
가 있는 는, 「」를 합니다.
taxonomy.php
,taxonomy-{$taxonomy}.php
★★★★★★★★★★★★★★★★★」taxonomy-{$taxonomy}-{$term}.php
템플릿입니다.자세한 내용은 템플릿 계층 확인
편집 1
용어에 가 있는 의 조작 에, 「」를 사용해 .pre_get_posts
을
add_action( 'pre_get_posts', function ( $q ) {
if( !is_admin() && $q->is_main_query() && is_post_type_archive( 'work' ) ) {
$q->set( 'categories', 'slides' );
}
});
편집 2
이 문제를 해결하기 위한 코드입니다.
투고 유형을 등록할 코드 대신 다음 코드를 복사하여 붙여넣습니다.를를 the the the the the the the the the the the 했습니다.has_archive
파라미터를 지정합니다.도 '개서하다'로 했습니다.categories
커스텀 포스트 타입과 분류 모두 같은 slug를 가지고 있는 것은 매우 곤란합니다.하지 않고, 빗나가게 합니다.
add_action( 'init', 'work_register' );
function work_register() {
$labels = array(
'name' => _x('Work', 'post type general name'),
'singular_name' => _x('Work Item', 'post type singular name'),
'add_new' => _x('Add New', 'work item'),
'add_new_item' => __('Add New Work Item'),
'edit_item' => __('Edit Work Item'),
'new_item' => __('New Work Item'),
'view_item' => __('View Work Item'),
'search_items' => __('Search Work'),
'not_found' => __('Nothing found'),
'not_found_in_trash' => __('Nothing found in Trash'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'menu_icon' => get_stylesheet_directory_uri() . '/article16.png',
'rewrite' => array( 'slug' => 'work', 'with_front'=> false ),
'capability_type' => 'post',
'hierarchical' => true,
'has_archive' => true,
'menu_position' => null,
'supports' => array('title','editor','thumbnail')
);
register_post_type( 'work' , $args );
register_taxonomy( 'categories', array('work'), array(
'hierarchical' => true,
'label' => 'Categories',
'singular_label' => 'Category',
'rewrite' => array( 'slug' => 'categories', 'with_front'=> false )
)
);
register_taxonomy_for_object_type( 'categories', 'work' ); // Better be safe than sorry
}
archive-work.php에서 커스텀 쿼리를 이 코드로 바꿉니다.
<?php
$count = 0;
echo '<ul>';
while ( have_posts() ) : the_post();
$count++;
$class = ($count % 3 == 1) ? 'first' : '';
echo '<li class="'.$class.'">';
echo '<a href="';
the_permalink();
echo '">';
echo '<div class="overlay" style="background-color:'.ot_get_option( 'main_colour' ).';"></div>';
the_post_thumbnail('full');
echo '</a>';
echo '<br />';
echo '<h2><a href="';
the_permalink();
echo '">';
the_title();
echo '</a></h2>';
echo '<div class="entry-content">';
echo limit_words(get_the_excerpt(), '30');
echo '..</div>';
echo '</li>';
endwhile;
echo '</ul>';
?>
매우 중요 -> OK, 백엔드(관리 영역)의 [설정]> [퍼멀링크]에 접속하여 [변경사항 저장]을 클릭합니다.이렇게 하면 퍼머링크가 플러싱되고 새로운 퍼머링크 구조가 설정됩니다.
방문 시 커스텀 투고 타입의 투고가 모두 표시됩니다.
<?php
query_posts( array( 'post_type' => 'work', 'categories' => 'slides' ) );
//the loop start here
if ( have_posts() ) : while ( have_posts() ) : the_post();
?>
<h3><?php the_title(); ?></h3>
<?php the_content(); ?>
<?php endwhile; endif; wp_reset_query(); ?>
나는 마침내 여기서 완벽하게 그것을 얻었다.
아래 코드로 시험해 보세요.
<?php
$args = array( 'posts_per_page' => 5,'post_type' => 'work','category' => 15 );
$myposts = get_posts( $args );
foreach ( $myposts as $post ):?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endforeach; ?>
언급URL : https://stackoverflow.com/questions/27896131/add-categories-to-custom-post-type-and-display-based-on-categories
'programing' 카테고리의 다른 글
멀티파트 파일 업로드 스프링 부트 (0) | 2023.03.13 |
---|---|
MUI에서 타이포그래피 텍스트 색상 설정 (0) | 2023.03.13 |
테이블에 날짜 값을 삽입하는 방법 (0) | 2023.03.13 |
json IAM 정책에 주석을 추가하려면 어떻게 해야 합니까? (0) | 2023.03.13 |
워드프레스 현재 카테고리 ID 가져오기 (0) | 2023.03.13 |