워드프레스 테마 만들기 | 글과 페이지 만들기

글과 페이지의 차이점

테마를 만드는 초기 단계에서, 글과 페이지의 차이점은 카테고리와 태그입니다. 글에는 카테고리와 태그가 있지만, 페이지는 없습니다. 코드도 딱 그 부분만 차이납니다.

글 만들기

글에는 제목, 작성자, 날짜와 시간, 카테고리, 태그, 본문, 댓글을 출력합니다.

태그는 글을 작성할 때 필수항목이 아니므로 없을 수도 있습니다. 따라서 태그가 있을 때만 출력하도록 만듭니다.

<?php if( has_tag() ) : ?>
  <li>Tag : <?php the_tags( '', ' ', '' ); ?></li>
<?php endif; ?>

댓글은, 댓글을 쓸 수 있도록 설정했거나 댓글이 하나라도 있을 때 출력하도록 만듭니다.

<?php
  if ( comments_open() || get_comments_number() ) :
    comments_template();
  endif;
?>

댓글 쓰기를 허용하면 댓글을 입력하는 폼이 나오고, 허용하지 않으면 나오지 않습니다.

A 자리에 다음 코드를 넣습니다.

<?php if ( have_posts() ) : ?>
  <?php while ( have_posts() ) : the_post(); ?>
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <ul>
      <li>Author : <?php the_author(); ?></li>
      <li>Date : <?php echo get_the_date(); ?> <?php echo get_the_time(); ?></li>
      <li>Category : <?php the_category( ', ' ); ?></li>
      <?php if( has_tag() ) : ?>
        <li>Tag : <?php the_tags( '', ' ', '' ); ?></li>
      <?php endif; ?>
    </ul>
    <?php the_content(); ?>
    <?php
      if ( comments_open() || get_comments_number() ) :
        comments_template();
      endif;
    ?>
  <?php endwhile; ?>
<?php endif; ?>

페이지 만들기

페이지에는 카테고리와 태그를 출력하는 코드가 빠집니다.

B 자리에 다음 코드를 넣습니다.

<?php if ( have_posts() ) : ?>
  <?php while ( have_posts() ) : the_post(); ?>
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <ul>
      <li>Author : <?php the_author(); ?></li>
      <li>Date : <?php echo get_the_date(); ?> <?php echo get_the_time(); ?></li>
    </ul>
    <?php the_content(); ?>
    <?php
      if ( comments_open() || get_comments_number() ) :
        comments_template();
      endif;
    ?>
  <?php endwhile; ?>
<?php endif; ?>

지금까지 만든 테마 파일

/functions.php

<?php
// Setup
  function cmsfactory_setup() {
    add_theme_support( 'title-tag' );
    add_theme_support( 'automatic-feed-links' );
    register_nav_menus( array(
      'main_menu' => 'Main Menu',
      'footer_menu' => 'Footer Menu',
    ) );
  }
  add_action( 'after_setup_theme', 'cmsfactory_setup' );
// Styles & Scripts
  function cmsfactory_scripts() {
    wp_enqueue_style( 'cmsfactory', get_theme_file_uri( '/style.css' ) );
  }
  add_action( 'wp_enqueue_scripts', 'cmsfactory_scripts' );

/index.php

<!doctype html>
<html <?php language_attributes(); ?>>
  <head>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <link rel="profile" href="http://gmpg.org/xfn/11">
    <?php wp_head(); ?>
  </head>
  <body <?php body_class(); ?>>
<div class="jb-container">
  <div class="jb-header">
    <header>
      <h1 class="jb-site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
      <?php
        wp_nav_menu( array(
          'theme_location'  => 'main_menu',
          'depth'           => 2,
          'fallback_cb'     => false,
          'menu_id'         => 'jb-main-menu',
          'menu_class'      => 'jb-menu',
        ) );
      ?>
    </header>
  </div>
  <div class="jb-content">
    <?php if ( is_single() ) : ?>
      <?php if ( have_posts() ) : ?>
        <?php while ( have_posts() ) : the_post(); ?>
          <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
          <ul>
            <li>Author : <?php the_author(); ?></li>
            <li>Date : <?php echo get_the_date(); ?> <?php echo get_the_time(); ?></li>
            <li>Category : <?php the_category( ', ' ); ?></li>
            <?php if( has_tag() ) : ?>
              <li>Tag : <?php the_tags( '', ' ', '' ); ?></li>
            <?php endif; ?>
          </ul>
          <?php the_content(); ?>
          <?php
            if ( comments_open() || get_comments_number() ) :
              comments_template();
            endif;
          ?>
        <?php endwhile; ?>
      <?php endif; ?>
    <?php elseif ( is_page() ) : ?>
      <?php if ( have_posts() ) : ?>
        <?php while ( have_posts() ) : the_post(); ?>
          <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
          <ul>
            <li>Author : <?php the_author(); ?></li>
            <li>Date : <?php echo get_the_date(); ?> <?php echo get_the_time(); ?></li>
          </ul>
          <?php the_content(); ?>
          <?php
            if ( comments_open() || get_comments_number() ) :
              comments_template();
            endif;
          ?>
        <?php endwhile; ?>
      <?php endif; ?>
    <?php elseif ( is_category() ) : ?>
      <h2>Category : <?php single_cat_title(); ?></h2>
      <?php if ( have_posts() ) : ?>
        <?php while ( have_posts() ) : the_post(); ?>
          <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
        <?php endwhile; ?>
      <?php endif; ?>
    <?php elseif ( is_tag() ) : ?>
      <h2>Tag : <?php single_tag_title(); ?></h2>
      <?php if ( have_posts() ) : ?>
        <?php while ( have_posts() ) : the_post(); ?>
          <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
        <?php endwhile; ?>
      <?php endif; ?>
    <?php elseif ( is_404() ) : ?>
      <p>Page Not Found</p>
    <?php else : ?>
      <?php if ( have_posts() ) : ?>
        <?php while ( have_posts() ) : the_post(); ?>
          <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
          <p>Category : <?php the_category(', '); ?></p>
        <?php endwhile; ?>
      <?php endif; ?>
    <?php endif; ?>
    <?php
      global $wp_query;
      $big = 999999999;
      echo paginate_links( array(
        'type'        => 'list',
        'base'        => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
        'format'      => '?paged=%#%',
        'current'     => max( 1, get_query_var('paged') ),
        'total'       => $wp_query->max_num_pages,
        'prev_text'   => __('<'),
        'next_text'   => __('>'),
      ) );
    ?>
  </div>
  <div class="jb-sidebar">
    <h2>Sidebar</h2>
  </div>
  <div class="jb-footer">
    <footer>
      <p>Copyright © <?php bloginfo( 'name' ); ?> All Rights Reserved.</p>
    </footer>
  </div>
</div>
    <?php wp_footer(); ?>
  </body>
</html>

/style.css

/*
  Theme Name: CMS FACTORY
  Author: JB
  Version: 1.0
*/
/* Layout */
* {
  box-sizing: border-box;
}
body {
  margin: 0px;
  padding: 0px;
  font-family: sans-serif;
}
a {
  text-decoration: none;
  color: #2196f3
}
.jb-container {
  width: 960px;
  margin: auto;
}
.jb-header {
  margin: 30px;
  padding: 0px 30px;
  border: 1px solid #cccccc;
}
.jb-content {
  margin: 30px;
  padding: 0px 30px;
  border: 1px solid #cccccc;
}
.jb-sidebar {
  margin: 30px;
  padding: 0px 30px;
  border: 1px solid #cccccc;
}
.jb-footer {
  margin: 30px;
  padding: 0px 30px;
  border: 1px solid #cccccc;
}
#jb-main-menu li {
  display: inline-block;
}
ul.page-numbers {
  margin: 30px 0px;
  padding: 0px;
  list-style-type: none;
}
ul.page-numbers li {
  display: inline-block;
}

Created on 2017-11-20 10:43 | Updated on 2017-11-22 11:07

워드프레스 프리미엄 테마 사이트

  • Elegant Themes
    80여 개의 테마를 한꺼번에 $89에 판매하는 경제적인 테마 사이트 / 1년 업데이트 / 무제한 사이트
  • ThemeForest
    10000여 개의 테마가 거래되는 세계 최대 워드프레스 테마 오픈 마켓 / 계속 업데이트 / 1개 애플리케이션