カスタム投稿タイプを100%使いきるための設定マニュアル(備忘録)

ワードプレスで通常の投稿とは別に「投稿の集まり」を作れる機能であるカスタム投稿タイプ。カスタム投稿タイプ用にテンプレートを作ってカスタムフィールドの入力のみで記事を作成できたり、カスタムタクソノミーといってカスタム投稿タイプごとに独自のタグやカテゴリーを設けられたりと、Wordpressでこれを覚えたらやりたい放題になる機能ですが、そもそも機能を使うのにもちょっと知識が必要だし、カスタム投稿タイプは導入しただけでは通常の記事のように動作しないし、いろいろと設定をしないと検索エンジンクローラーが来てくれない(インデックスされない)など忘れてはいけない設定がたくさんあるので、忘れないように手順を書いておこうと思います。これだけやればカスタム投稿タイプを100%活用できる手順です。

スポンサーリンク

カスタム投稿タイプを作る

これは、コードを自分で書くよりもプラグインに委ねた方がいい。一番有名な「Custom Post Type Ui」を使用すれば簡単にカスタム投稿タイプがいくらでも作れます。

Wordpressでは通常の投稿とは別に「投稿の集まり」を作るカスタム投稿タイプという機能があります。また、通常のカテゴリーとは別に「カテゴリーの集まり」を作るカスタムタクソノミーという機能があります。「Custom Post Type UI」は「カスタム投稿タイプ」や「カスタムタクソノミー」を簡単にいくつでも作成することができるプラグインです。

ちなみにですが、「Custom Post Type UI」でカスタム投稿タイプを作成するとき右側のオプションにある「リライト」という項目を「する」に設定すると、今までの記事をカスタム投稿タイプで作ったタイプへ変更してもきちんとリダイレクトしてくれます。分かりやすく言うと、元の記事アドレスにアクセスしてもきちんと新しいアドレスに変換して表示してくれるということですね。
ソースでは下のコード部分になります
“rewrite” => array( “slug” => “wpupdate”, “with_front” => true ),
 ただこの処理には限界があって、サイトへのリンク(内部・外部とも)を通常のaタグを使う

<a href=""></a>

とブログカードでのリンクはできないものの、URL自体はリダイレクトしてくれるのでとりあえずリンク切れすることはないのですが、新しいバージョンのワードプレスの場合に追加された、記事のURLを書くとブログカードでのリンクを作ってくれる機能に関してはリンク切れとなってしまうので調整が必要だと思います。

記事として認識するために欠かせないパーマリンク

カスタム投稿タイプをただ単に追加しただけでは、記事を表示したときに「404」エラーが出てしまい表示されません。Wordpressでは新たに記事の集まりを作った場合には必ず「パーマリンク設定の更新」をして、構造をリフレッシュする必要があるようです。特に変更事項はありませんが、
「設定」→「パーマリンク設定」を開き、そのまま何もせず更新するだけで構造がリフレッシュされ、カスタム投稿タイプの記事がちゃんと表示されるようになります。
この後にカスタム投稿タイプ独自のパーマリンク構造を与えたい場合には、「Custom Post Type Permalinks」プラグインで行います。これを使うとパーマリンク設定画面にカスタム投稿タイプ毎のパーマリンク構造設定用の項目が追加されるのでそこで設定するだけです。

記事追加時にping送信させる

通常の投稿なら記事追加時に自動でping送信が行われ、検索エンジンなどに通知されるのですが、カスタム投稿タイプを追加しただけではこの機能が適用されません。以下のコードをfunctions.phpに追加して認識させる必要があります。

function カスタム投稿タイプ名_pings_at_publish( $post_id ) {
    wp_schedule_single_event( strtotime( '+10 min' ), 'do_pings', array( $post_id ) );
}
 
add_action( 'publish_カスタム投稿タイプ名', 'カスタム投稿タイプ名_pings_at_publish', 10, 1 );

functions.phpの直接編集が怖い場合には「code snippets」というプラグインを使うとエラーチェックもしてくれて便利です

Wordpressの機能をカスタマイズする際には「プラグイン」を使う他にfunctions.phpへ直接「コードスぺニット」記述する方法があります。「Code Snippets」は、直接functions.phpに記述するコードを直接ファイルに挿入することなく管理できるプラグインです。

RSS情報を追加

記事の更新情報を送信する手立てとして使われるRSSフィード。これもカスタム投稿タイプを導入しただけでは認識してくれないので、以下のコードをfunctions.phpへ追加して実装します。

// functions.php
function myfeed_request($qv) {
  if (isset($qv['feed']) && !isset($qv['post_type']))
    $qv['post_type'] = array('カスタム投稿タイプ名1', 'カスタム投稿タイプ名2');
  return $qv;
}
add_filter('request', 'myfeed_request');

「カスタム投稿タイプ名」のところにカスタム投稿タイプのスラグを入れて完了、たくさんある場合はカンマで区切って増やせばいい。

新着記事にカスタム投稿タイプの記事を含める

通常の記事とは別にカスタム投稿タイプ毎の記事一覧を表示してもいいとは思うのですが、どうせなら通常の記事一覧とカスタム投稿タイプの記事を混ぜて表示した方がサイトの新鮮さが伝わるというもの。これを行うには以下のコードをfunctions.phpへ追加して実装します。

function chample_latest_posts( $wp_query ) {
    if ( is_home() && ! isset( $wp_query->query_vars['suppress_filters'] ) ) {
        $wp_query->query_vars['post_type'] = array('カスタム投稿タイプ名1', 'カスタム投稿タイプ名2');
    }
}
add_action( 'parse_query', 'chample_latest_posts' );

「カスタム投稿タイプ名」のところにカスタム投稿タイプのスラグを入れて完了、たくさんある場合はカンマで区切って増やせばいい。

カテゴリーアーカイブにカスタム投稿タイプの記事を含める

カスタム投稿タイプを追加した際に今まで使っていたカテゴリーと共有する設定をした場合、カテゴリー一覧ページが表示されたときには投稿もカスタム投稿タイプも混ぜて表示をしたいというときのカスタマイズです。これを行うには以下のコードをfunctions.phpへ追加して実装します。

function add_post_category_archive( $wp_query ) {
if ($wp_query->is_main_query() && $wp_query->is_category()) {
$wp_query->set( 'post_type', array('post','カスタム投稿タイプ名'));
}
}
add_action( 'pre_get_posts', 'add_post_category_archive' , 10 , 1);

「カスタム投稿タイプ名」のところにカスタム投稿タイプのスラグを入れて完了、たくさんある場合はカンマで区切って増やせばいい。

タグアーカイブにカスタム投稿タイプの記事を含める

カスタム投稿タイプを追加した際に今まで使っていたタグと共有する設定をした場合、タグ一覧ページが表示されたときには投稿もカスタム投稿タイプも混ぜて表示をしたいというときのカスタマイズです。これを行うには以下のコードをfunctions.phpへ追加して実装します。

function add_post_tag_archive( $wp_query ) {
if ($wp_query->is_main_query() && $wp_query->is_tag()) {
$wp_query->set( 'post_type', array('post','カスタム投稿タイプ名'));
}
}
add_action( 'pre_get_posts', 'add_post_tag_archive' , 10 , 1);

「カスタム投稿タイプ名」のところにカスタム投稿タイプのスラグを入れて完了、たくさんある場合はカンマで区切って増やせばいい。

管理画面にカスタム投稿タイプ毎の記事数を表示

ダッシュボードにいつも表示されている「投稿○件」などの情報がカスタム投稿タイプにはありません。この画面に投稿タイプ毎の記事数を表示するには以下のコードをfunctions.phpへ追加します

add_action( 'dashboard_glance_items', 'add_custom_post_dashboard_widget' );
function add_custom_post_dashboard_widget() {
	$args = array(
		'public' => true,
		'_builtin' => false
	);
	$output = 'object';
	$operator = 'and';

	$post_types = get_post_types( $args, $output, $operator );
	foreach ( $post_types as $post_type ) {
		$num_posts = wp_count_posts( $post_type->name );
		$num = number_format_i18n( $num_posts->publish );
		$text = _n( $post_type->labels->singular_name, $post_type->labels->name, intval( $num_posts->publish ) );
		if ( current_user_can( 'edit_posts' ) ) {
		    $output = '<a href="edit.php?post_type=' . $post_type->name . '">' . $num . '&nbsp;' . $text . '</a>';
		}
		echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
	}
}

WordPress Popular Postsの設定変更

 当サイトではウィジェットとトップページにWordpress Popular Postsのランキングを載せているのですが、ここも設定を変更しないとカスタム投稿タイプの記事は適用されないので修正。

トップページのショートコード

トップページへはショートコードで一覧表示していますが、ここにパラメーターを足す必要があります。
通常は、[wpp]と記述すればひとまずデフォルトの状態での人気記事表示がされますが、ここへカスタム投稿タイプの情報も追加します。追加するのは

post_type="post,page,カスタム投稿タイプ名1,カスタム投稿タイプ名2"

という内容です。たくさんある場合はカンマで区切って増やせばいいです。

サイドバーウィジェットの設定

使用しているSimplicityというテーマではWordpress Popular Postsと連携して人気記事を作成できるようになっているのですが、この機能の中でのカスタマイズはできなさそうなので、通常のWordpress Popular Postsウィジェットを使い、ウィジェットの設定の中にある「Post type(s):」という項目にカンマ区切りでカスタム投稿タイプ名を追加していけば完了です。

「WordPress Popular Posts」はアクセスのあった記事や固定ページの中から「日」「週」「月」「累計」などさまざまな期間で人気のある記事のランキング表示ができるWordpressプラグインです。

カスタム投稿タイプ用の記事テンプレートやアーカイブページを作る

通常テーマの動作はカスタム投稿タイプ用のテンプレートが存在しなければ、通常のテンプレートを使うようになっていますので個人的には必要に迫られてからでもいいと思いますが、テーマによっては作らないと動作しないものもあるかもしれません。
ちなみに、simplicityでカスタム投稿タイプ用のテンプレートを作るための備忘録です

今使っている「Simplicity」でカスタム投稿タイプ向けの投稿テンプレートを作ってみたときの備忘録です。 せっかくカスタム投稿を作るのですから、それを表示するためのテンプレートをオリジナルで作りたいですよね。特にカスタムフィールドなどを使ってフロントエンドから入力した内容を表示させるにはカスタム投稿用のテンプレートを使う必要性が出てきます。

プラグインなどで個別に設定を行う

今私が使用しているプラグインでは
「Add Quick Tag」
「Google Sitemap Generator」
「Wp To Twitter」
「Advanced Custom Fields」
あたりで各プラグイン設定画面で項目が追加されているので環境に合わせて調整する必要があります。「通常の投稿では使えたのに・・・」と何時間も調べる前にプラグインを使って追加した機能であればまずは関連するプラグインの設定を確認してみてください


以上で普通の投稿とほぼ同様に扱うことができるようになります。各項目を設定する毎にちゃんと動作するかを確認しておくようにしましょう。

あとは好みや使っている機能に合わせて調整していけばいいと思いますので、参考記事へのリンクを作っておきます。

サイトに閲覧者向けのサイトマップを設置することは、訪問者に対して記事を探しやすくするのに必須のページだといえます。有名なプラグインに「PS Auto Sitemap」がありますが、残念ながらカスタム投稿タイプには対応していません。「WP Sitemap Page」はカスタム投稿タイプも含めすべての記事や固定ページの一覧が作成できるプラグインです。
カスタム投稿タイプは作ったけど、記事の一覧はどうやって作ったらいいの?が簡単にショートコードで作れるプラグインが「Custom Post Type List Shortcode」です。コードを直接書いて表示するのもいいですが、サムネイル付の一覧などを簡単に設置することができます。
Wordpressで専用の記事を書いていくことができる機能である「カスタム投稿タイプ」。ここに書いた記事の一覧を固定ページや記事の中に表示するコードです。
「Post Type Switcher」はカスタム投稿タイプに今まで作った記事を移動させたいときに役立つプラグインです。
「Convert Post Types」はカスタム投稿タイプに今まで作った記事を移動させたいときに役立つプラグインです。
カスタム投稿タイプを作っていざ新規投稿をと思って画面を開いたら、いつもの投稿編集画面にあるべきものがない!ということで解ってしまえばちょっとお間抜けな話なのですが、同じようなことになっている人がいたら助けになればと思い、備忘録的な記事を書きます。
 カスタム投稿タイプが使えるようになって、良い気になっていくつか追加して、そこに記事を追加していましたが、ふと「アクセス全然ない」ということに気づきました。気になってGoogleさまでインデックスの確認したら、いつもの記事なら最悪でも翌日にはインデックスされていたのに1週間前の記事でもノーインデックス、頭の中真っ白になりました。ここは基本に戻ってGoogleさまに記事が追加されたことは伝わっているのか?などいろいろと対応しました。
役に立つ情報でしたらぜひSNSやメールでシェアしてください
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
ページ先頭へ