Saba note

醜悪コード Ugly hacks ITものづくり

WordPressのカスタム投稿タイプ

カスタム投稿タイプを登録する

functions.phpに新しいカスタム投稿タイプを登録するのがいちばんカンタンです。
ここでは「bookmark」というカスタム投稿タイプを登録します。もっともミニマルな形だと以下のようなコードになります。

// functions.php
add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'bookmark',
    array(
      'labels' => array(
        'name' => __( 'Bookmarks' ),
        'singular_name' => __( 'Bookmark' )
      ),
      'public' => true,
      'has_archive' => true,
    )
  );
}

このコードを追加して管理画面をリロードすると新しい投稿タイプのメニューがサイドバーに現れます。そこから記事の投稿ができるようになります。

カスタム投稿タイプ専用のテンプレート

デフォルトの投稿タイプのテンプレートが使えないのでカスタム投稿タイプ専用のテンプレートを準備します。

  • archive-bookmark.php
  • single-bookmark.php

archive-bookmark.phpはいわゆるインデックス用のアーカイブページなんかに。single-bookmark.phpは記事を個別に表示するテンプレートです。見ればわかるといった感じなので解説不要かと。
また、カスタム投稿タイプは通常のWPループから記事が取り出せないので以下のようにWP_Queryクラスからパラメータを与えてnewします。オブジェクトを取得してしまえば、後は通常のループでいろいろできます。ループ中のWPタグ(関数)はいつもと同じものが使えます。

<?php
// archive-bookmark.php
// single-bookmark.php
$args = array( 'post_type' => 'bookmark', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
  the_title();
  echo '<div class="entry-content">';
  the_content();
  echo '</div>';
endwhile;
?>

ここまでが基本的な構造になります。

カスタム投稿タイプのパーマリンク

デフォルトでは、

/Wordpressのインストールしたディレクトリ/投稿タイプ名/

が基本形(ベース)になります。あとはいつものようにいろいろパーマリンクを変更できます。
ここまでの設定をしてもうまくカスタム投稿タイプが反映されないときは、パーマリンクの設定で更新ボタンを押してください。設定が反映されます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です