사용자 지정 게시물 유형에 대한 '단일'페이지 만들기
4 대답
- 투표
-
- 2012-04-26
단일 템플릿에는
single-{posttype}.php
를 사용합니다.또한has_archive
인수를true
로 설정하여 게시물 유형을 등록하면archive-{posttype}.php
를 사용할 수 있습니다.글로벌$wp_query
개체가 이미 사용자 지정 게시물 유형으로 채워지기 때문에 거기에있는 쿼리를 건너 뛸 수있는 아카이브 템플릿입니다.BTW,
post_type
인수에 공백이있어 문제가됩니다.템플릿 계층 을 확인하고 코드를 사용하여 CPT 등록
Use
single-{posttype}.php
for the single template. Also, if you register your post type with thehas_archive
argument set totrue
, then you can usearchive-{posttype}.php
for your archive template, which will allow you to skip that query that you have there, since the global$wp_query
object will already be populated with your custom post type.BTW, you have a space in your
post_type
argument, which will be a problem.Check out the Template Hierarchy, and consider registering your CPTs using code in a plugin rather than using a CPT UI plugin.
-
- 2015-04-10
WordPress는 기본 페이지 템플릿을 사용하므로 필요하지 않지만 사용자 정의 single-cpt.php를 만들 수 있습니다. 파일에서 cpt는 등록 된 게시물 유형 의 이름입니다.
<?php get_header(); ?> <div id="main-content" class="main-content"> <div id="primary" class="content-area"> <div id="content" class="site-content" role="main"> <?php // Start the Loop. while ( have_posts() ) : the_post(); // Include the page content template. get_template_part( 'content', 'page' ); endwhile; ?> </div><!-- #content --> </div><!-- #primary --> </div><!-- #main-content --> <?php get_sidebar(); get_footer();
There's no need as WordPress will use the default page template however you can create a custom single-cpt.php file where cpt is the name of your registered post type.
<?php get_header(); ?> <div id="main-content" class="main-content"> <div id="primary" class="content-area"> <div id="content" class="site-content" role="main"> <?php // Start the Loop. while ( have_posts() ) : the_post(); // Include the page content template. get_template_part( 'content', 'page' ); endwhile; ?> </div><!-- #content --> </div><!-- #primary --> </div><!-- #main-content --> <?php get_sidebar(); get_footer();
-
- 2012-04-26
이것을 당신의 single.php 파일 (루프 안에)에 쓰고if 문에서 필요한 모든 필드를 반향 할 수 있습니다.
if($post_type == 'case_studies') { // you may need this to be without spaces (machine name) echo '<h1>'.get_the_title().' flavors</h1>'; // post id $post_id = get_the_ID(); get_post_meta($post_id, 'custom_field_name', true); <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a> <?php endwhile; ?> }
또 다른 옵션은t0 페이지 템플릿 만들기입니다.single.php 파일을 복사하고php 태그 내 상단에 case_studies.php .. 이름을 추가합니다.
<?php /* Template Name: Brand Output 04/12 */ ?>
그런 다음 위의 예와 같이 single.php 루프 내에 동일한if 문을 추가합니다 ...
You could just write this into your single.php file (within the loop) and echo out whatever fields you need within the if statement.
if($post_type == 'case_studies') { // you may need this to be without spaces (machine name) echo '<h1>'.get_the_title().' flavors</h1>'; // post id $post_id = get_the_ID(); get_post_meta($post_id, 'custom_field_name', true); <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a> <?php endwhile; ?> }
Another option is t0 create a page template. Copy your single.php file and rename it case_studies.php .. at the top within php tags add:
<?php /* Template Name: Brand Output 04/12 */ ?>
and then add the same if statement within the single.php loop as the above example...
-
이것은 작동하지만 나쁜 습관입니다. 가장 가까운 것은`get_template_part ( 'stuff',$post->post_type);`입니다.Thsi works, but it is bad, bad practice, the nearest you should ever get to this is `get_template_part('stuff',$post->post_type);`
- 0
- 2012-04-26
- Tom J Nowell
-
왜 나쁜 습관인지 설명해 주시겠습니까?can you explain why it is bad practice?
- 0
- 2012-04-27
- Starfs
-
부정확 한 코드이고if else 문과 중복 된 코드가 많기 때문입니다.'content.php'와 같은 템플릿 파일을 만들고`get_template_part ( 'content',$post_type);`를 수행하고`content-case_studies.php`를 사용하여 게시물 유형별로 재정의하는 것이 좋습니다.Because it's unclean code, and you have a tonne of if else statements, and duplicated code. You would be better creating a template file like 'content.php', and doing `get_template_part('content',$post_type);` and using `content-case_studies.php` to override it on a per post type basis
- 0
- 2012-04-27
- Tom J Nowell
-
그렇게하면 single.php를 읽을 수 있습니다.그래도 적절한 방법으로 수행하고`single-case_studies.php`를 사용하는 것이 좋습니다.That way your single.php remains readable. Even then it would eb better ot do it the proper way and use `single-case_studies.php`
- 0
- 2012-04-27
- Tom J Nowell
-
멋있는.사용자 지정 게시물 유형을 출력하는이 새로운 방법을 반영하기 위해 테마의 코드를 변경했습니다.고마워요cool. I changed the code in my theme to reflect this new method for outputting custom post types. thanks for the heads up
- 3
- 2012-04-30
- Starfs
-
- 2015-04-10
Wordpress의 Custom Post Type. 기본 4 단계 Step1 : 파일 경로 위치 : 테마의theme/function.php.function.php에 코드 붙여 넣기 (사용자 정의 포스트 유형 등록)
<?php add_action( 'init', 'custom_post_type_func' ); function custom_post_type_func() { //posttypename = services $labels = array( 'name' => _x( 'Services', 'services' ), 'singular_name' => _x( 'services', 'services' ), 'add_new' => _x( 'Add New', 'services' ), 'add_new_item' => _x( 'Add New services', 'services' ), 'edit_item' => _x( 'Edit services', 'services' ), 'new_item' => _x( 'New services', 'services' ), 'view_item' => _x( 'View services', 'services' ), 'search_items' => _x( 'Search services', 'services' ), 'not_found' => _x( 'No services found', 'services' ), 'not_found_in_trash' => _x( 'No services found in Trash', 'services' ), 'parent_item_colon' => _x( 'Parent services:', 'services' ), 'menu_name' => _x( 'Services', 'services' ), ); $args = array( 'labels' => $labels, 'hierarchical' => true, 'description' => 'Hi, this is my custom post type.', 'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'page-attributes' ), 'taxonomies' => array( 'category', 'post_tag', 'page-category' ), 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_nav_menus' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'has_archive' => true, 'query_var' => true, 'can_export' => true, 'rewrite' => true, 'capability_type' => 'post' ); register_post_type( 'services', $args ); } ?>
2 단계 : 워드 프레스 템플릿 페이지에서 워드 프레스 맞춤 게시물 유형을 표시하려면 어떻게해야합니까?
다음과 같이 템플릿 페이지의 아무 곳에 나 표시 할 수 있습니다.
<?php $args = array( 'post_type' => 'services', 'posts_per_page' => 20 ); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); ?> <div class="services-items"> <?php the_title(); if ( has_post_thumbnail( $post->ID ) ) { echo '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( $post->post_title ) . '">'; echo get_the_post_thumbnail( $post->ID, 'thumbnail' ); echo '</a>'; } ?> </div> <?php endwhile; ?>
3 단계 : 이와 같은 단일 게시물 표시를위한 새 템플릿 만들기
단일-{맞춤 게시물 유형 이름} .php 또는 single-services.php
4 단계 : single-services.php 파일에 코드 붙여 넣기 p>
<?php /* The loop */ ?> <?php while ( have_posts() ) : the_post(); ?> <div class="main-post-div"> <div class="single-page-post-heading"> <h1><?php the_title(); ?></h1> </div> <div class="content-here"> <?php the_content(); ?> </div> <div class="comment-section-here" <?php //comments_template(); ?> </div> </div> <?php endwhile; ?>
이는 단일 게시물 페이지가있는 맞춤 게시물 유형의 예입니다.
Custom Post Type in wordpress.Basic four steps.Step1: File Path location : theme/function.php in your theme.Paste code in function.php (register custom post type )
<?php add_action( 'init', 'custom_post_type_func' ); function custom_post_type_func() { //posttypename = services $labels = array( 'name' => _x( 'Services', 'services' ), 'singular_name' => _x( 'services', 'services' ), 'add_new' => _x( 'Add New', 'services' ), 'add_new_item' => _x( 'Add New services', 'services' ), 'edit_item' => _x( 'Edit services', 'services' ), 'new_item' => _x( 'New services', 'services' ), 'view_item' => _x( 'View services', 'services' ), 'search_items' => _x( 'Search services', 'services' ), 'not_found' => _x( 'No services found', 'services' ), 'not_found_in_trash' => _x( 'No services found in Trash', 'services' ), 'parent_item_colon' => _x( 'Parent services:', 'services' ), 'menu_name' => _x( 'Services', 'services' ), ); $args = array( 'labels' => $labels, 'hierarchical' => true, 'description' => 'Hi, this is my custom post type.', 'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'page-attributes' ), 'taxonomies' => array( 'category', 'post_tag', 'page-category' ), 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_nav_menus' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'has_archive' => true, 'query_var' => true, 'can_export' => true, 'rewrite' => true, 'capability_type' => 'post' ); register_post_type( 'services', $args ); } ?>
Step2: how can show wordpress custom post type in wordpress template page ?
You can show anywhere in template page like this :
<?php $args = array( 'post_type' => 'services', 'posts_per_page' => 20 ); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); ?> <div class="services-items"> <?php the_title(); if ( has_post_thumbnail( $post->ID ) ) { echo '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( $post->post_title ) . '">'; echo get_the_post_thumbnail( $post->ID, 'thumbnail' ); echo '</a>'; } ?> </div> <?php endwhile; ?>
Step3: Create new template for show single post like this
single-{custom post type name}.php or single-services.php
Step4: Paste code in single-services.php file
<?php /* The loop */ ?> <?php while ( have_posts() ) : the_post(); ?> <div class="main-post-div"> <div class="single-page-post-heading"> <h1><?php the_title(); ?></h1> </div> <div class="content-here"> <?php the_content(); ?> </div> <div class="comment-section-here" <?php //comments_template(); ?> </div> </div> <?php endwhile; ?>
This is custom post type example with single post page.
알겠습니다. Custom Post Type UI 플러그인을 설치하고 만듭니다.그런 다음 새 게시물을 추가했습니다.내 테마에는 다음과 같은 코드가 있습니다.
이제 먼저 썸네일을 클릭하면 브라우저에 리디렉션 루프에 있다는 오류가 표시되지만 두 번째로이 맞춤 게시물의 단일 게시물을보기 위해 만들어야하는 파일이 무엇인지 정확히 알고 싶습니다.유형.그리고 그 파일에 무엇을 넣을지.