수색…


사용자 정의 게시 유형 책의 사용자 정의 템플리트 작성

맞춤 게시물 유형의 단일 게시물에 대한 템플릿을 만들려면 single- post_type_name .php라는 파일을 만들어야합니다. 여기서 post_type_name 은 맞춤 게시물 유형의 이름입니다.

예를 들어, 우리의 커스텀 포스트 타입이 "Books"라고 불리는 경우, single- book .php라는 PHP 파일을 생성해야합니다. 맞춤 게시물 유형의 단수 이름을 사용했습니다.

테마 폴더에서 single.php의 내용을 복사하여 새 템플리트에 붙여넣고 저장하면 템플리트가 사용자 정의 게시물 유형 개별 페이지에 적용됩니다.

맞춤형 포스트 유형 템플릿


사용자 정의 게시 유형 아카이브 :

커스텀 포스트 유형에 대한 아카이브 템플릿을 생성하려면 register_post_type() 함수에서 has_archive 인자를 true 로 설정해야합니다. 아래 예에서는 사용자 정의 게시 유형이 이벤트 게시 유형에 대해 작성됩니다.

add_action( 'init', 'create_events_post_type' );
function create_events_post_type() {
  register_post_type( 'event',
    array(
      'labels' => array(
        'name' => __( 'Events' ),
        'singular_name' => __( 'Event' )
      ),
      'public' => true,
      'has_archive' => true,
    )
  );
}

새로운 사용자 정의 게시 유형에 대한 템플리트작성 하려면 새 템플리트 파일을 작성해야합니다. 단일 게시 페이지에 대한 템플릿을 만들려면 아카이브의 이름을 single-{post_type}.php , archive-{post_type}.php 로 지정하십시오.

아카이브 템플리트의 파일 이름은 archive-event.php 이고 이벤트 페이지는 single-event.php 입니다. 두 파일 모두 테마 루트 디렉토리에 있어야합니다.

예제 아카이브 템플리트는 다음과 같습니다. twentyseventeen 테마 에서 뽑아 냈습니다 .

<?php
/**
 * The template for displaying archive pages
 *
 * @link https://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Seventeen
 * @since 1.0
 * @version 1.0
 */

get_header(); ?>

<div class="wrap">

    <?php if ( have_posts() ) : ?>
        <header class="page-header">
            <?php
                the_archive_title( '<h1 class="page-title">', '</h1>' );
                the_archive_description( '<div class="taxonomy-description">', '</div>' );
            ?>
        </header><!-- .page-header -->
    <?php endif; ?>

    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">

        <?php
        if ( have_posts() ) : ?>
            <?php
            /* Start the Loop */
            while ( have_posts() ) : the_post();

                /*
                 * Include the Post-Format-specific template for the content.
                 * If you want to override this in a child theme, then include a file
                 * called content-___.php (where ___ is the Post Format name) and that will be used instead.
                 */
                get_template_part( 'template-parts/post/content', get_post_format() );

            endwhile;

            the_posts_pagination( array(
                'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Previous page', 'twentyseventeen' ) . '</span>',
                'next_text' => '<span class="screen-reader-text">' . __( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ),
                'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyseventeen' ) . ' </span>',
            ) );

        else :

            get_template_part( 'template-parts/post/content', 'none' );

        endif; ?>

        </main><!-- #main -->
    </div><!-- #primary -->
    <?php get_sidebar(); ?>
</div><!-- .wrap -->

<?php get_footer();

사용자 지정 게시 유형 단일 템플릿 :

다음은 하나의 템플릿 예제입니다. twentyseventeen 테마 에서 뽑아 냈습니다 .


<?php
/**
 * The template for displaying all single posts
 *
 * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post
 *
 * @package WordPress
 * @subpackage Twenty_Seventeen
 * @since 1.0
 * @version 1.0
 */

get_header(); ?>

<div class="wrap">
    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">

            <?php
                /* Start the Loop */
                while ( have_posts() ) : the_post();

                    get_template_part( 'template-parts/post/content', get_post_format() );

                    // If comments are open or we have at least one comment, load up the comment template.
                    if ( comments_open() || get_comments_number() ) :
                        comments_template();
                    endif;

                    the_post_navigation( array(
                        'prev_text' => '<span class="screen-reader-text">' . __( 'Previous Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Previous', 'twentyseventeen' ) . '</span> <span class="nav-title"><span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '</span>%title</span>',
                        'next_text' => '<span class="screen-reader-text">' . __( 'Next Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Next', 'twentyseventeen' ) . '</span> <span class="nav-title">%title<span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ) . '</span></span>',
                    ) );

                endwhile; // End of the loop.
            ?>

        </main><!-- #main -->
    </div><!-- #primary -->
    <?php get_sidebar(); ?>
</div><!-- .wrap -->

<?php get_footer();

두 템플릿 예제 모두 내부 내용을 표시하기 위해 부분적 으로 가져옵니다.

자녀 / 부모 테마에 단일 / 아카이브 템플릿이있는 경우 새 템플릿에 대한 상용구로 해당 코드를 사용해야합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow