【HABONE】テーマでカスタム投稿タイプを使う際の設定いろいろ

【HABONE】テーマでカスタム投稿タイプを使う際の設定いろいろ

WordPressの標準機能であるカスタム投稿タイプは、もちろん【HABONE】テーマでも使用可能です(本サイトでもいくつかのカスタム投稿タイプを使って、投稿のジャンル分けをしています)。

カスタム投稿タイプを追加する方法は、必要なコードをfunctions.phpへ追加してもいいですし、「Custom Post Type UI」などの管理画面上でカスタム投稿タイプの追加や管理ができるプラグインを使っても大丈夫です(私は管理のしさすさからプラグインを使用します)。

ここでは、いずれかの方法でカスタム投稿タイプを作成した際に行っておいた方がいいサイト設定について、いくつか紹介していきます。

本記事は、テーマのfunctions.phpへコードを追加することで実現できる方法を紹介するものです。スキルのない方や自信のない方、万が一の際の復旧方法をご存じない方が本記事を参考に適用させることは避けていただきます様お願いします(不具合が発生しても当方では一切責任を負いません)。

カスタム投稿タイプで作成した投稿の公開時にもping送信をする

検索エンジンやブログランキングへ投稿を追加しましたよ!と伝える役目をするping送信。まあ、通知するだけの機能ですから、それによってインデックス(検索エンジンへの登録)が早まったりするという効果についてはもはや都市伝説ですが、少しでも効果を!という方は設定しておいた方がよいでしょう。

ブログランキングなどでは、サイトからpingを受信した段階でしか記事の取得をしてくれないものが多いので、参加されている方は必ず行った方がよいでしょう。

テーマのfunctions.phpへ以下のコードを挿入し、自身の作成したカスタム投稿タイプに合わせて修正します

/* Ping送信 */
function ユーザー定義関数名( $post_id ) {wp_schedule_single_event( strtotime( '+10 min' ), 'do_pings', array( $post_id ) );}
add_action( 'publish_カスタム投稿タイプのスラグ', 'ユーザー定義関数名', 10, 1 );

コード中の以下の部分を修正します。

  • ユーザー定義関数名・・サイト内で重複しない文字列を半角英数字と「_」で命名します
  • カスタム投稿タイプのスラグ・・・カスタム投稿タイプ作成時に設定したスラグを転記します

複数のカスタム投稿タイプを使う場合は、上記コードを必要なカスタム投稿数だけ作り、カスタム投稿タイプのスラグの編集と、重複しないユーザー定義関数名への変更を行います

新着記事一覧へ追加

カスタム投稿タイプへ追加した投稿を、閲覧画面の投稿一覧(新着一覧)へ含めるには、以下のコードをテーマのfunctions.phpへ追加して、自身の環境に合わせて修正します。

/* 新着記事一覧へ追加 */
function habone_chample_latest_posts( $wp_query ) {
if ( is_home() && ! isset( $wp_query->query_vars['suppress_filters'] ) ) {
        $wp_query->query_vars['post_type'] = array('post','カスタム投稿タイプのスラグ');
    }
}
add_action( 'parse_query', 'habone_chample_latest_posts' );

コード中の「カスタム投稿タイプのスラグ」となっている箇所をご自身のサイトのカスタム投稿タイプスラグへ変更します。

複数追加する場合は、コード中の「,’カスタム投稿タイプのスラグ’」の後ろへ、必要数分の「,’カスタム投稿タイプのスラグ’」を追加し、環境に合わせて変更します

カテゴリーアーカイブに含める

カスタム投稿タイプの投稿を、通常の投稿のカテゴリーと紐づけるようにしている場合、この措置を行うことでカテゴリーの一覧へカスタム投稿タイプの投稿も含めることができます。

以下のコードをテーマのfunctions.phpへ追加して、自身の環境に合わせて修正します。

/* カテゴリーアーカイブに含める */
function habone_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', 'habone_add_post_category_archive' , 10 , 1);

コード中の「カスタム投稿タイプのスラグ」となっている箇所をご自身のサイトのカスタム投稿タイプスラグへ変更します。

複数追加する場合は、コード中の「,’カスタム投稿タイプのスラグ’」の後ろへ、必要数分の「,’カスタム投稿タイプのスラグ’」を追加し、環境に合わせて変更します

タグーアーカイブに含める

カスタム投稿タイプの投稿を、通常の投稿のタグと紐づけるようにしている場合、この措置を行うことでタグの一覧へカスタム投稿タイプの投稿も含めることができます。

以下のコードをテーマのfunctions.phpへ追加して、自身の環境に合わせて修正します。

function habone_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', 'habone_add_post_tag_archive' , 10 , 1);

コード中の「カスタム投稿タイプのスラグ」となっている箇所をご自身のサイトのカスタム投稿タイプスラグへ変更します。

複数追加する場合は、コード中の「,’カスタム投稿タイプのスラグ’」の後ろへ、必要数分の「,’カスタム投稿タイプのスラグ’」を追加し、環境に合わせて変更します

ダッシュボードへ記事数追加

管理画面のダッシュボード上にある「概要」パネルへカスタム投稿ごとの投稿数を表示します。

以下のコードをテーマのfunctions.phpへ追加します。

/* ダッシュボードへ記事数追加 */
function habone_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>';
    }
}
add_action( 'dashboard_glance_items', 'habone_add_custom_post_dashboard_widget' );

アクティビティへ記事数追加

管理画面のダッシュボード上にある「アクティビティ」欄に、カスタム投稿タイプの投稿を含めることができます。

以下のコードをテーマのfunctions.phpへ追加して、自身の環境に合わせて修正します。

/* アクティビティへ記事数追加 */
function habone_dashboard_recent_posts_query_args( $query_args ) {

	$query_args['post_type'] = array('post','page','カスタム投稿タイプのスラグ');
	if ( $query_args['post_status'] == "publish" )
		$query_args['posts_per_page'] = 10;
	return $query_args;
  }
add_filter( 'dashboard_recent_posts_query_args', 'habone_dashboard_recent_posts_query_args', 10, 1 );

コード中の「カスタム投稿タイプのスラグ」となっている箇所をご自身のサイトのカスタム投稿タイプスラグへ変更します。

複数追加する場合は、コード中の「,’カスタム投稿タイプのスラグ’」の後ろへ、必要数分の「,’カスタム投稿タイプのスラグ’」を追加し、環境に合わせて変更します

RSSフィードへカスタム投稿の投稿も含める

RSSリーダーなどで受信されるためのRSSフィードへカスタム投稿タイプの投稿を含めることができます。

以下のコードをテーマのfunctions.phpへ追加して、自身の環境に合わせて修正します。

/***** RSS *****/
function habone_feed_request($qv) {
  if (isset($qv['feed']) && !isset($qv['post_type']))
    $qv['post_type'] = array('post','カスタム投稿タイプのスラグ');
  return $qv;
}
add_filter('request', 'habone_feed_request');

コード中の「カスタム投稿タイプのスラグ」となっている箇所をご自身のサイトのカスタム投稿タイプスラグへ変更します。

複数追加する場合は、コード中の「,’カスタム投稿タイプのスラグ’」の後ろへ、必要数分の「,’カスタム投稿タイプのスラグ’」を追加し、環境に合わせて変更します


ここまでは【HABONE】に限らずどんなテーマでも基本同じです。ここからは【HABONE】ならではの機能に対してカスタム投稿タイプを追加する設定です。

管理画面の一覧の更新日項目をソート可能にする

【HABONE】テーマは管理画面の投稿一覧へ「最終更新日」を表示し、この日付で並び替えができるようになっています。カスタム投稿タイプの投稿一覧でも本機能を使うためには、以下のコードをテーマのfunctions.phpへコピーし、使用状況に合わせて変更や追加を行ってください。

/***** 管理画面の一覧の更新日項目をソート可能にする(親テーマfunctionを上書き) *****/
function habone_modified_column_register_sortable( $columns ) {
	$columns['Modified'] = 'modified';
	return $columns;
}
add_filter( 'manage_edit-post_sortable_columns', 'habone_modified_column_register_sortable' );
add_filter( 'manage_edit-page_sortable_columns', 'habone_modified_column_register_sortable' );
add_filter( 'manage_edit-カスタム投稿タイプのスラグ_sortable_columns', 'habone_modified_column_register_sortable' );

コード中の「カスタム投稿タイプのスラグ」をご自身のサイトのカスタム投稿タイプのスラグへ変更してください。

複数のカスタム投稿タイプを追加する場合は以下のコードを一番下へ追加し、スラグの変更を行ってください。

add_filter( 'manage_edit-カスタム投稿タイプのスラグ_sortable_columns', 'habone_modified_column_register_sortable' );

SEOフィールドの設定をカスタム投稿タイプでも適用する

【HABONE】テーマは独自のSEOフィールド機能を備えています。カスタム投稿タイプの投稿一覧でも本機能を使うためには、以下のコードをテーマのfunctions.phpへコピーし、使用状況に合わせて変更や追加を行ってください。

/***** functions/seo_fields.phpに書かれているSEOフィールドの設定をカスタム投稿タイプでも適用する *****/
function habone_add_custom_fields() {
add_meta_box( 'seo_setting', 'SEO対策', 'habone_seo_custom_fields', 'post', 'normal', 'high');
add_meta_box( 'seo_setting', 'SEO対策', 'habone_seo_custom_fields', 'page', 'normal', 'high');
add_meta_box( 'seo_setting', 'SEO対策', 'habone_seo_custom_fields', 'カスタム投稿タイプのスラグ', 'normal', 'high');

}
add_action('admin_menu', 'habone_add_custom_fields');

コード中の「カスタム投稿タイプのスラグ」をご自身のサイトのカスタム投稿タイプのスラグへ変更してください。

複数のカスタム投稿タイプを追加する場合は以下のコードの下へ同じコードを追加し、スラグの変更を行ってください。

add_meta_box( 'seo_setting', 'SEO対策', 'habone_seo_custom_fields', 'カスタム投稿タイプのスラグ', 'normal', 'high');

View数を並び替え可能にする

【HABONE】テーマでは、独自のページビュー数カウント機能があり、それを人気投稿の順番として使用したり、管理者権限のユーザーへ管理画面の一覧および個別投稿のタイトル下にビュー数を表示させたりしており、管理画面側の一覧では、ビュー数での並び替えを可能にしています。カスタム投稿タイプの投稿一覧でも本機能を使うためには、以下のコードをテーマのfunctions.phpへコピーし、使用状況に合わせて変更や追加を行ってください。

/***** View数を並び替え可能にする(親テーマfunctionを上書き) *****/
function habone_viewsuu_column_register_sortable( $sortable_column ) {
    $sortable_column['post_views_count'] = 'post_views_count';
    return $sortable_column;
}
add_filter( 'manage_edit-post_sortable_columns', 'habone_viewsuu_column_register_sortable' );
add_filter( 'manage_edit-page_sortable_columns', 'habone_viewsuu_column_register_sortable' );
add_filter( 'manage_edit-カスタム投稿タイプのスラグ_sortable_columns', 'habone_viewsuu_column_register_sortable' );

コード中の「カスタム投稿タイプのスラグ」をご自身のサイトのカスタム投稿タイプのスラグへ変更してください。

複数のカスタム投稿タイプを追加する場合は以下のコードを一番下へ追加し、スラグの変更を行ってください。

add_filter( 'manage_edit-カスタム投稿タイプのスラグ_sortable_columns', 'habone_viewsuu_column_register_sortable' );

「え?こんなに作業しないといけないの?」と思われるかも知れませんが、文中でも一度書いた通り、カスタム投稿タイプスラグにどんな文字列が使われているか?や、どのカスタム投稿タイプを含めるのか?とい判別は自身で行う必要があるため【HABONE】テーマに限らずどんなテーマでも基本的にこれらを行う必要があります。

カスタム投稿タイプを追加した際に一度行うだけですので、頑張って設定していってください。

サイトへの支援をお願いします

最後までお読みいただきありがとうございました。本記事の内容がお役に立てましたら幸いです。
今後もよりよい情報を提供し続けることができるよう、投げ銭によるサイトへの支援、およびSNSによる拡散をお願いします

作者:

WordPress用テーマ「ha-Basic」「HABONE」の開発、プラグインやテーマの翻訳、WordPressの使い方やカスタマイズ方法などの情報を配信しています。

年齢:40代 趣味/園芸・ペット・卓球