WordPress カスタム投稿タイプの作り方

WordPressで記事を投稿できる投稿タイプは、必要に応じて新しい投稿タイプを作成することができます。

それが「カスタム投稿タイプ」です。

デフォルトで用意されている投稿タイプのカテゴリを使うことで、カテゴリ別に投稿を分けて表示することもできますが、投稿タイプで分けて記事を管理する方がわかりやすく記事を管理することができます。

この記事では、カスタム投稿タイプを設置する方法について解説をします。

カスタム投稿タイプの作り方

カスタム投稿タイプは、プラグインとfunctions.phpで自作する2つの方法があります。

どちらの方法も簡単に投稿タイプを追加することができますが、今回はfunctions.phpを使って投稿タイプを増やす方法について解説をします。

functions.phpに記述して投稿タイプを一度追加すると2回目以降も同じソースを使いますことができるので、大変便利です。

カスタム投稿タイプの記述例

まずは、テンプレートファイルにあるfunctions.phpに以下のコードを入力します。

function cpt_register_works(){$labels = [
"shingular_name => "works",
"edhit_item" => "works",
];
$args = [
"label" => "Works",
"labels" => $labels,
"description" => "",
"public" => true,
"show_in_rest" => true,
"rest_base" => "",
"rest_controller_class" => "WP_REST_Posts_controller",
"has_acrchive" => true,
"delete_wit_user" => false,
"exclude_from_search" => false,
"map_meta_cap" => true,
"hierachical" => true,
"rewite" => [ "slug" => "works","with_front" => true],
"query_vae" => true,
"menu_postion" => 5,
"supports" => [ "title","editor","thumbnail"],
];
register_post_type("works",$args);
add_action('init', 'cpt_register_works');

カスタム投稿タイプの記述の説明

最初に注目すべき点は、最終行に記述した

add_action('init', 'cpt_register_works');

です。

add_actionとは、特定のアクションに関数をフックするものです。

add_actionには4つのパラメータがあり、上記のフックでは2つのパラメータを設定しています。

$hok:$function_to_addがフックされるアクション名で、特定の処理のときの中でadd_actionを作動させるフックを定義しています。
上記の例では、initというアクションフックのパラメータを入れています。

$functionto_add:フックする関数名を指定します。上記の場合では、cpt_register_worksを指定します。

つまり上記の add_acitonはinitが動作したときにcpt_register_worksが動作するように定義しています。

そして、cpt_register_worksを定義しているのが、

function cpt_register_works(){

で、$argsにカスタム投稿タイプの設定(ラベルのなどを)を記述しています。

上記のことをまとめると、

  1. add_actionで、カスタム投稿タイプを発動させるフックをつくる
  2. フックで動作させる関数をfunctionで定義する
  3. $argsにカスタム投稿タイプの詳細を記述する

となります。

自作した投稿タイプをウェブサイトに表示する

作成した投稿タイプは、トップページに一覧を作成して、詳細ページへのリンクを表示することができます。

トップページに一覧表示するには、front-page.php内でサブクエリを使って表示する必要があります。

<?php $args = array(
'post_type' => 'works'
'posts_per_page' => 3
):
$the_query = new WP_Query($args):if($the_query->hav_posts()): ?>
<?php while($the_query->hav_posts()): $the_query->the_post():?>
<?php endwhile;?>
<?php endif;?>

カスタム投稿タイプを表示させるコードの説明文

まずは、配列を使って複数のデータを$argsに値を代入します。

代入する値は、functions.phpで作成したworksというカスタム投稿タイプで、表示する一覧の数を3つ(任意)と定義します。

そして、the_queryでWordPress内に新しいオブジェクトを生成し、先程の配列$argsを引っ張ってきます。

その後は、$argsに値があれば、データを引っ張ってくる命令文を繰り返しの中で表示する記述を行います。

こうすることで、オブジェクト内に投稿があればそれをトップページの一覧に表示することができるようになります。