カスタム投稿タイプの一覧ページにリンクするためには、get_post_type_archive_link()関数を使います。
ただ、この関数を使えば、それでリンクできるかというと、それができないんです。
カスタム投稿タイプの一覧ページのリンクコードを作成する前にする事。
カスタム投稿タイプを作る時は、今はCustom Post Type UIのプラグインを使っているケースがほとんどだと思いますが、このプラグインを使っている場合は設定設定項目で「アーカイブアリ」を「ture」にしないといけないんですね。
デフォルトだと「false」になっているので、get_post_type_archive_link()関数を使う場合は、まずはこの設定を済ませてから使います。
さて、get_post_type_archive_link()関数の使い方ですが、パラメータに設定するのは、投稿タイプのスラッグになります。
1 |
get_post_type_archive_link(‘投稿タイプのスラッグ’) |
投稿タイプのスラッグを「test」としている場合は、get_post_type_archive_link(‘test’)になります。
これでカスタム投稿タイプ「test」のアーカイブページへのリンクが生成されます。
カスタム投稿タイプ名が「テスト」とした場合、作成するコードとしては、
1 |
<a href="<?php echo get_post_type_archive_link( 'test' ); ?>">テスト</a> |
となります。
もし、個別ページでリンクテキストも同時に生成したい場合は、get_post()関数を使うやり方があります。
get_post()関数は投稿に関するいろんな情報を取得できますが、投稿タイプ名を取得する時は、「get_post()->post_type」とします。
この「get_post()->post_type」については、「WordPressの投稿タイプ名を記事ページで取得・表示する方法!」でも解説しているので、一度チェックしてみて下さい。
さて、投稿タイプページへのリンクURLの生成とリンクテキストを作成するコードとしては以下の通りになります。
カスタム投稿タイプの一覧ページにリンクするコード
1 |
<a href="<?php echo get_post_type_archive_link( '投稿タイプのスラッグ' ); ?>"> <?php echo get_post()->post_type; ?></a> |
また、投稿タイプ名については、get_post_type()でも取得できるので、
<a href=”<?php echo get_post_type_archive_link( ‘test’ ); ?>”><?php echo get_post_type(); ?></a>としても同じ内容を表示できます。
カスタム投稿タイプの投稿数を一緒に表示するならwp_count_posts()関数。
カスタム投稿タイプのアーカイブページへのリンクとともにその投稿タイプに属する投稿数を一緒に表示したい場合は、wp_count_posts()関数を使います。
wp_count_posts()の使い方
1 2 3 4 5 |
<?php $count_custom = wp_count_posts('投稿タイプのスラッグ'); $custom_posts = $count_custom->publish; echo '('.$custom_posts.')'; ?> |
wp_count_posts()関数はパラメータに指定したカスタム投稿タイプの投稿数を取得オブジェクトとして返してくれます。
ただ、そのオブジェクトの中には公開されていないものも含まれるので、->publishとして公開されている投稿数の情報だけを取り出します。
因みに、下書きを数える場合は->draftとします。
そして、取り出された投稿数を最後はechoを使って表示します。
カテゴリーのブロックなどにも使えるので、知っておくと便利かも知れないですね。
今回は、普通の投稿タイプのカテゴリーとカスタム投稿タイプをサイドバーに表示し、そこに投稿数も一緒に表示してみました。
ブログなどでよくあるパターンのやつですね。
カスタム投稿タイプの一覧ページにリンクする方法のまとめ。
カスタム投稿タイプの一覧ページにリンクするためには、get_post_type_archive_link()関数を使えば、すぐにできます。
ポイントはCustom Post Type UIを使っている場合は設定項目でアーカイブありのところを「ture」にしておくこと。
あとは、投稿数を表示するためには、wp_count_posts()関数ことですね。
この記事で掲載しているコードを使えば、カスタム投稿タイプのスラッグ以外のところはコピペで使えるので、良かったら使ってみて下さい。