カスタム投稿タイプの作成と投稿ページ・一覧ページの作り方

プラグインを使わずにWordpressのカスタム投稿タイプを作ります。

カスタム投稿タイプの作成方法

ますはfunctions.phpに下記を追記して下さい。

管理画面に項目追加

管理画面に投稿するための項目を追加します。

add_action( 'init', 'add_post_type_event', 0 ); 
function add_post_type_event() { register_post_type( 'event', /* カスタム投稿タイプのスラッグ */ array( 'labels' => array(
                'name' => 'イベント',
            ),
        'public' => true,
        'has_archive' => true,
        'supports' => array('title','editor','excerpt','thumbnail','author','revisions')
        )
    );
}

エディターの中のオプションも決めれる。

‘title’ — タイトル
‘editor’ — 本文のエディタ
‘author’ — 作成者
‘thumbnail’ — アイキャッチ画像
‘excerpt’ — 抜粋
‘trackbacks’ — トラックバック送信
‘custom-fields’ — カスタムフィールド
‘comments’ — ディスカッション
‘revisions’ — リビジョン
‘page-attributes’ — 属性(親・順序)

投稿ページの作り方

カスタム投稿タイプのスラッグ名をつけたphpを用意します。
Wordpressはphpファイルに命名規則があります。

命名規則をきちんと守ればカンタンに投稿ページや一覧ページを作ることができます。
今回は“event”という名前のスラッグなのでsingle-event.phpという名前になります。

  <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    <h2></h2>
    <a href="<?php the_permalink(); ?>">
        <?php the_title(); ?>
    </a>

    <div class="entry">
        <?php the_content(); ?>
    </div>
    <div class="data">
        <?php the_time('Y/m/d'); ?>
    </div>
    <?php endwhile; endif; ?>

一覧ページの作り方

こちらも同様に命名規則を守れば、カンタンに一覧ページを作ることができます。
今回は“event”という名前のスラッグなので

<section class="l-contents event">
    <ul>
        <?php $args = array(
        'numberposts' => 12,                //表示(取得)する記事の数
        'post_type' => 'event'    //投稿タイプの指定
    );
    $posts = get_posts( $args );
    if( $posts ) : foreach( $posts as $post ) : setup_postdata( $post ); ?>
        <li>
           
            <a href="<?php the_permalink(); ?>">
               <?php the_post_thumbnail(); ?>
               
                <?php the_title(); ?>
                <?php the_time('Y/m/d'); ?>
                
            </a>
        </li>
        <?php endforeach; ?>
        <?php else : //記事が無い場合 ?>
        <li>
            <p>記事はまだありません。</p>
        </li>
        <?php endif;
    wp_reset_postdata(); //クエリのリセット ?>
    </ul>
</section>

という名前になります。

備忘録でした。
ほなね


この記事の知識を動画講座で学ぶ