カスタム投稿覚えたらヤメラレナイトマラナイ
用途
例えばチェーン店を包括するサイトを作るとして、
- 店舗紹介
- スタッフ紹介
のページを作ることになったとして、固定ページで作ってもいいんだけど、「カスタム投稿」を利用してそれぞれを記事投稿のように、個別に作成することができる。
管理画面上で確実に分けられるのはすごく都合がいい。
で、WP自体にカスタム投稿の機能はあるけど、使用するにはfunctions.phpに打ち込むなりプラグインを使うなりで準備が必要。
ベタ打ちで作るのは面倒が勝つのでプラグインに依存する。
必然的に「Custom Post Type UI」になる。
Custom Post Type UI | WordPress.org
https://ja.wordpress.org/plugins/custom-post-type-ui/
導入メモ
基本的な使い方は検索すれば出てくるので個人的なメモ。
スラッグの付け方
投稿タイプ(post_type)とタクソノミー(taxonomy)を同じにしないこと。
例えば投稿タイプ「staff」タクソノミー「staff」でもサイトとして問題なく使えるんだけど、管理画面上の記事一覧で絞り込み検索機能が死ぬ。
ついでにいうと後から見返すときに混同すると面倒なので、そういう意味でも分けたほうがいい。
完全に分けちゃうとそれも混乱するかもしらんので、投稿タイプ「post_staff」タクソノミー「taxonomy_staff」みたいな、そんな感じで。
スラッグの変更
一度作成した投稿タイプ、タクソノミーのスラッグは後から変更できる。
既に記事とかタームを登録しちゃってても変更は反映されるので大丈夫。
でもミスったら怖いので、新しく投稿タイプとタクソノミー作って練習したほうがいいかも。
投稿タイプの変更
- 「CPT UI」
- 「投稿タイプの追加と編集」
- 「投稿タイプを編集」
- 該当のスラッグを選択
- 「投稿タイプスラッグ」変更
- 「投稿を改名後の投稿タイプへ移行する」チェック
- 「複数形のラベル」変更
- 「単数形のラベル」変更
- 念の為一番下までスクロールして、「利用するタクソノミー」を確認。該当のものにチェック
- 「投稿タイプを保存」クリック
タクソノミーの変更
-
- 「CPT UI」
- 「タクソノミーの追加と編集」
- 「タクソノミーを編集」
- 該当のスラッグを選択
- 「タクソノミースラッグ」変更
- 「タームを改名後のタクソノミーへ移行する」チェック
- 「複数形のラベル」変更
- 「単数形のラベル」変更
- 「利用する投稿タイプ」で該当の投稿タイプにチェック
- 「タクソノミーを保存」クリック
投稿タイプの設定
「アーカイブあり:この投稿タイプには投稿タイプアーカイブの URL が存在 (デフォルト: false)」
投稿記事として使う場合は設定もそっちに寄せたほうが楽だと思うので、そうであればTrue。
タクソノミーの設定
「階層:このタクソノミーは親子関係を持つことが可能 (デフォルト: false)」
Trueにするとカテゴリーみたくタームを親子化できる。
抽出ルールを作りたい時、親子でまとめると便利。
ターム登録した後からTrueにしても大丈夫。
各ページファイルの名前
archive-【ページスラッグ】.php
single-【ページスラッグ】.php
こんなかんじ。
「page-***.php」みたいな、管理画面上の設定は不要で勝手に反映する。
タクソノミーを絞り込んで表示
例えばこう。
「タクソノミー」は上記で作ったやつ。
「ターム」はそのタクソノミーで作ったタグ的なやつ。
<?php
$args=array(
'tax_query' =--> array(
array(
'taxonomy' => '*******', //タクソノミーを指定
'field' => 'slug', //ターム名をスラッグで指定する
'terms' => array( '********' ) //表示したいタームをスラッグで指定
),
),
'post_type' => '*******', //カスタム投稿名
'order' => 'DESC',
'posts_per_page'=> -1 //表示件数(-1で全ての記事を表示)
);
?>
<?php query_posts( $args ); ?>
<?php if(have_posts()): ?>
<ul>
<?php while(have_posts()):the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title();?></a></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_query(); ?>
ちなみに、これを書き込むと最後の「wp_reset_query();」が効いちゃって、それ以降はページ自体のthe_content();とかの読み込み系が死ぬ。
なので例えば最下部でカスタム投稿を読み込んで、jQueryで位置を変更すると楽かも。
「.before()」とか「.after()」とかその辺り。
コメント