사용자 지정 게시물 유형 및 범주
카테고리가 있는 사용자 지정 게시물 유형을 만들기 위해 며칠 동안 노력했습니다.지금까지는 이 작업을 수행하고 있으며, 쉽게 콘텐츠를 추가하여 카테고리에 할당할 수 있습니다.제 코드는 아래와 같습니다.
내가 이해할 수 없고 작동할 수 없는 것은 카테고리의 게시물을 표시하는 보관 페이지를 만드는 것입니다.
예를 들어,저의 게시물 유형은 광고라고 합니다.저의 카테고리는 사진작가입니다.
페이지에서 자신이 어떤 카테고리에 있는지 동적으로 파악하고 해당 카테고리에 속한 모든 사용자 지정 게시물을 표시할 수 있습니까?
function my_custom_post_advert() {
$labels = array(
'name' => _x( 'Adverts', 'post type general name' ),
'singular_name' => _x( 'Advert', 'post type singular name' ),
'add_new' => _x( 'Add New', 'advert' ),
'add_new_item' => __( 'Add New Advert' ),
'edit_item' => __( 'Edit Advert' ),
'new_item' => __( 'New Advert' ),
'all_items' => __( 'All Adverts' ),
'view_item' => __( 'View Advert' ),
'search_items' => __( 'Search Adverts' ),
'not_found' => __( 'No adverts found' ),
'not_found_in_trash' => __( 'No adverts found in the Trash' ),
'parent_item_colon' => '',
'menu_name' => 'Adverts'
);
$args = array(
'labels' => $labels,
'description' => 'Holds our adverts and advert specific data',
'public' => true,
'menu_position' => 5,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'category' ),
'has_archive' => true,
);
register_post_type( 'advert', $args );
}
add_action( 'init', 'my_custom_post_advert' );
function my_taxonomies_advert() {
$labels = array(
'name' => _x( 'Advert Categories', 'taxonomy general name' ),
'singular_name' => _x( 'Advert Category', 'taxonomy singular name' ),
'search_items' => __( 'Search Advert Categories' ),
'all_items' => __( 'All Advert Categories' ),
'parent_item' => __( 'Parent Advert Category' ),
'parent_item_colon' => __( 'Parent Advert Category:' ),
'edit_item' => __( 'Edit Advert Category' ),
'update_item' => __( 'Update Advert Category' ),
'add_new_item' => __( 'Add New Advert Category' ),
'new_item_name' => __( 'New Advert Category' ),
'menu_name' => __( 'Advert Categories' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
);
register_taxonomy( 'advert_category', 'advert', $args );
}
add_action( 'init', 'my_taxonomies_advert', 0 );
기본적으로 WP_query가 사용자 정의된 페이지 템플릿을 만들어야 WordPress에서 사용자 정의된 카테고리를 확인할 수 있습니다.
페이지 템플릿을 만들고 나면 워드프레스 관리...에서 새 페이지 템플릿을 템플릿으로 선택하여 페이지를 만들 수 있습니다.
그리고 카테고리를 동적으로 설정하려면 항상 $_GET 파라미터를 사용하여 광고를 표시할 카테고리를 결정하도록 페이지 템플릿을 설정할 수 있습니다.이와 같습니다.
http://example.com/adverts-listing/?mycat=photographers
아니면
http://example.com/adverts-listing/?mycat=programmers
기타.
다음은 페이지 템플릿의 모양 예입니다(물론 이는 사용 중인 테마에 따라 달라집니다).이 예제는 2414 테마를 사용하기 위해 만들어졌습니다.)
<?php
/**
* Template Name: Advert Listing
*
*/
get_header(); ?>
<section id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php
// Set the args array for the query to happen
$args = array(
'post_type' => 'adverts',
'post_status' => 'publish',
'posts_per_page' => 10
);
// Dynamically set the mycat argument from a $_GET parameter
if( isset($_GET['mycat']) ) {
$args['tax_query'] => array(
array(
'taxonomy' => 'advert_category',
'field' => 'slug',
'terms' => $_GET['mycat']
)
);
}
// Issue the query
$q = null;
$q = new WP_Query($args);
// Start the loop
if( $q->have_posts() ) : ?>
<header class="page-header">
<h1 class="page-title"><?php _e( 'Advert Listing:', 'twentyfourteen' ); ?></h1>
</header>
<?php
while ($q->have_posts()) : $q->the_post();
?>
<article id="post-<?php the_ID(); ?>" class="post-<?php the_ID(); ?> adverts type-adverts status-publish hentry">
<header class="entry-header">
<a href="<?php echo get_permalink(get_the_ID()); ?>"><h3 class="entry-title"><?php the_title(); ?></h3></a>
</header><!-- .entry-header -->
<div class="entry-content">
<?php the_excerpt(); ?>
</div>
</article>
<?php
endwhile;
// Previous/next post navigation.
twentyfourteen_paging_nav();
else :
// If no content, include the "No posts found" template.
get_template_part( 'content', 'none' );
endif;
wp_reset_query(); // Restore global post data stomped by the_post().
?>
</div><!-- #content -->
</section><!-- #primary -->
<?php
get_sidebar( 'content' );
get_sidebar();
get_footer();
/광고로 이동할 수 있어야 합니다.또한.has_archive
보관 페이지를 만들어야 합니다.
많은 번거로움을 덜기 위해, 그리고 내가 과거에 사용했던 것은 이 맞춤형 포스트 타입 플러그인입니다 - 그것은 매력처럼 작용합니다:
유형 내용 유형, 사용자 정의 필드 및 분류법을 추가하여 워드프레스 관리자를 사용자 정의할 수 있습니다.워드프레스 관리자를 제작하여 자신만의 콘텐츠 관리 시스템으로 전환할 수 있습니다.
그래서 이 Custom post type 아카이브 플러그인을 사용합니다.
이 플러그인을 사용하면 피드, 사용자 지정 가능한 제목 및 페이징과 함께 사용자 지정 포스트 유형 아카이브(연간, 월간, 일간)를 사용할 수 있습니다.
이 솔루션은 기본적으로 스택 오버플로에 대한 다른 곳의 이 질문에 대한 답변에 포함되어 있습니다.
요약하자면, 사용자 지정 쿼리를 만들되 $args 배열에서는 다음을 대체합니다.
'cat_name' => 'Photographers'
다음과 같은 분류학 쿼리를 사용합니다.
'tax_query' => array( array( 'taxonomy' => 'advert_category', 'field' => 'slug', 'terms' => 'photographers' ) )
물론, 당신은 다음을 포함해야 합니다.'post-type' => 'advert'
또한 $args로 제공됩니다.도움이 되길 바랍니다!
그래서 카테고리가 있는 맞춤형 포스트 타입도 필요했습니다.
아래 코드는 정말 간단하고 깨끗합니다.말 그대로 복사해서 붙여넣기.필요한 것에 맞춰 조정해요이것이 미래에 사람들에게 도움이 되길 바랍니다.
기본적으로 일반 워드프레스 카테고리와 사용자 지정 게시물 유형을 연결합니다. 워드프레스 관리 섹션에서 작업할 때 클라이언트가 정말 쉽게 작업할 수 있습니다.태그를 통한 개별 분류법도 있습니다.따라서 모든 포스트 유형 또는 포스트 특정 분류법을 통해 카테고리를 가질 수 있습니다.
코드는 꽤나 설명이 됩니다.제 대표성을 높이기 위해 필요한 제 답변에 투표해주세요.감사해요.
당신은 당신의 기능에 코드를 복사해야 합니다.php 파일
add_action( 'init', 'create_post_types' );
function create_post_types() {
// Custom Post 1
register_post_type( 'companies',
array(
'labels' => array(
'name' => __( 'Companies' ),
'singular_name' => __( 'Company' )
),
'public' => true,
'has_archive' => true,
)
);
// Default Wordpress Category Taxonomy
register_taxonomy_for_object_type( 'category', 'companies' );
// Post Specific Taxonomy
register_taxonomy( 'company_category', 'companies' );
// Custom Post 2
register_post_type( 'events',
array(
'labels' => array(
'name' => __( 'Events' ),
'singular_name' => __( 'Event' )
),
'public' => true,
'has_archive' => true,
)
);
// Default Wordpress Category Taxonomy
register_taxonomy_for_object_type( 'category', 'events' );
// Post Specific Taxonomy
register_taxonomy( 'events_category', 'events' );
// Custom Post 3
register_post_type( 'deals',
array(
'labels' => array(
'name' => __( 'Deals' ),
'singular_name' => __( 'Deal' )
),
'public' => true,
'has_archive' => true,
)
);
// Default Wordpress Category Taxonomy
register_taxonomy_for_object_type( 'category', 'deals' );
// Post Specific Taxonomy
register_taxonomy( 'deals_category', 'deals' );
// Custom Post 4
register_post_type( 'banners',
array(
'labels' => array(
'name' => __( 'Banners' ),
'singular_name' => __( 'Banner' )
),
'public' => true,
'has_archive' => true,
)
);
// Default Wordpress Category Taxonomy
register_taxonomy_for_object_type( 'category', 'banners' );
// Post Specific Taxonomy
register_taxonomy( 'banners_category', 'banners' );
}
커스텀 포스트 타입은 4가지가 있어서 코드가 꽤 설명적이라고 말씀드렸습니다.
언급URL : https://stackoverflow.com/questions/16612411/custom-post-types-and-categories
'programing' 카테고리의 다른 글
gzip 파일이 압축되어 있는지 확인하는 방법은 무엇입니까? (0) | 2023.11.04 |
---|---|
범위가 분리된 지시어에 ng-show를 사용하는 방법 (0) | 2023.11.04 |
SQL 로더 오류: "변수 길이 필드가 최대 길이를 초과합니다." (0) | 2023.11.04 |
{"readyState":4", status":200", statusText":"성공"}을(를) 사용한 오류 콜백 (0) | 2023.11.04 |
SQL 쿼리에서 기본값을 반환하는 방법 (0) | 2023.11.04 |