【ha-Basic】テーマでカスタム投稿タイプを使う場合の設定いろいろ

公開日: 更新日: カスタマイズいろいろ

WordPressにはカスタムなんちゃらという用語がいっぱい出てきますね。今回はそのうちの1つ、カスタム投稿タイプを【ha-Basic】テーマで使う場合の設定方法を紹介します。

カスタム投稿タイプについてどんなものかを知りたい方は↓をクリックすると解説をご覧いただけます
※できるだけかみ砕いて説明していますが余計に混乱するかも知れません(文才がなくてすみません・・)

カスタム投稿タイプってなんじゃらほい?

Wordpressの機能の1つです。Wordpressをインストールすると、「投稿」と「固定ページ」という2つのコンテンツ作成機能が付いているのはご存知ですよね?

実はこの2つも投稿タイプの1つなんです。

投稿タイプは・・・ バックエンド(管理画面側)で「投稿」「固定ページ」という独立したメニューリンクがあり、クリックすると別々の一覧が表示されるようになっています。

訪問者にそれぞれのページを表示させるときには「投稿」は投稿用のテンプレート、「固定ページ」は固定ページ用のテンプレートを使うようになっています。 投稿は日付順を意識した形でページが表示され、日時順を意識した投稿の一覧が表示されるようになっています。 また、固定ページは表に表示される一覧がなく、日付を意識しないような形のテンプレートになっています。

つまり、管理画面側ではそれぞれ独立したメニュー(集まり)を持ち、別々のテンプレートを使って表示させる・・という仕組みのことを投稿タイプというのです。

では「カスタム投稿タイプ」は?ですが、これらの「投稿」「固定ページ」と何も変わりません。記事の集まりを後から自由に追加できる機能のことを言っているだけです。カスタム投稿タイプは基本的に「投稿」用のテンプレートを通して訪問者には表示されるようになっていますが、そのカスタム投稿タイプだけ別のテンプレートで表示させるようにできる機能も持っています。

例えばお店などへの集客を促すサイトを作る場合には、お客様へお知らせする情報は「投稿」で、ショップの所在地や価格などは「固定ページ」で、お店独自の商品の紹介などは「商品」というカスタム投稿タイプで・・・といった使い方ができます。

また、いろいろなコンテンツを追加するプラグインの多くはカスタム投稿タイプが使われています。

上の解説をご覧になった方は「あれ?普通の投稿と同じように扱われるのでは?」ちょっと疑問に思ったかも知れません。カスタム投稿タイプが投稿と同じように扱われるのはテンプレート部分だけ、つまりはカスタム投稿タイプへ書いた記事は基本何もしなければ投稿と同じように表示されますよ!ということだけ。それ以外の部分はカスタム投稿タイプ用に個別設定したり、投稿だけでなくカスタム投稿タイプも含めて・・といった処置が必要になります。

これは【ha-Basic】テーマでなくてもほとんどのテーマが同じですので、【ha-Basic】テーマを使用していない方はご自身のテーマに照らし合わせて読んでいただければ仕組みは何となく理解いただけると思います。

カスタム投稿タイプを作ろう

通常カスタム投稿タイプは、それ用のコードを記述したものをテーマのfunctions.phpへ追記することで作成でき、運営できるようになります。がfunctions.phpへの追記は失敗すると混乱しますし、何よりコードを覚えるのも面倒なので、簡単なフォームへの設定入力でカスタム投稿タイプの作成ができ、動作させることができるプラグインを使用します。

おすすめは

です。後に設定内容を変更する場合もこのプラグインの設定メニューからできますので非常に便利です。

※もう完成したからプラグインをなしにしたいという方はこのプラグインが出力するプログラムをfunctions.phpへ追記すればプラグインを停止しても動作します(コードが重複しても動作はするように設計されているのでそこも安心ですね)。

カスタム投稿タイプを作る部分については今回の記事とは主旨が異なりますのでこの位にしておきます。

ここからはこのプラグインやカスタム投稿タイプを追加するコードでできないことで、使い勝手を良くしたりする方法を【ha-Basic】テーマへ設定する方法を例にいくつか紹介してきます。

【ha-Basic】テーマファイルの修正

カスタム投稿タイプ名を「custom」にした場合をベースに解説していきますので、ご自身で作られたカスタム投稿タイプ名に置き換えて設定してください。

関連記事へカスタム投稿タイプを含める

【ha-Basic】が関連記事を抽出する条件は「投稿」の中で「同一のカテゴリー」にある記事をランダム表示させていますので、これにカスタム投稿タイプを含める場合には変更します

編集するのは「related-entries.php」と「related-entry-mobile.php」の2つです(編集部分は同じです)。

それぞれのファイルの8行目付近にある

$args = array(
'post__not_in' => array($post -> ID),
の下に以下のコードを追加します。
'post_type' => array('post','custom'),
これは「投稿」と「customというカスタム投稿タイプ」の両方から記事を抽出してくださいという指示になります。
※投稿タイプ名はご自身の環境に合わせてください。複数追加する場合は「,’投稿タイプ名’」を後ろに追加してください。

追加したら保存して完了です
バージョン4.9より前のWordpressではコードに間違いがあると画面が真っ白になってサイトが動作しなくなりますので慎重に作業してください。

「説明」と「キーワード」入力欄の追加

【ha-Basic】テーマではHTMLへのメタデータを以下のような仕組みで出力しています。

  • キーワード(meta-keywords)
  • 投稿編集画面の「キーワード」欄に入力があればそのまま出力、そうでなければ空データ

  • 抜粋(meta-description)/構造化データ(schema)/SNS埋め込み時に利用されるコード(OGP)
  • 投稿編集画面の「キーワード」欄に入力があればそのまま出力、なければショートコードを省いた上で本文先頭から〇文字

これはカスタム投稿タイプでも同じですので、カスタム投稿タイプの投稿編集画面へ入力用の窓を用意します。

編集するのは「seo_fields.php」です。

8行目付近に

add_meta_box( 'seo_setting', 'SEO対策', 'seo_custom_fields', 'page', 'normal', 'high');
という記述がありますのですぐ下にコピーして以下のように変更します
add_meta_box( 'seo_setting', 'SEO対策', 'seo_custom_fields', 'custom', 'normal', 'high');

※投稿タイプ名はご自身の環境に合わせてください。複数追加する場合は行をコピーしてカスタム投稿タイプ名に変更する作業を繰り返してください

終わったら保存して完了です
バージョン4.9より前のWordpressではコードに間違いがあると画面が真っ白になってサイトが動作しなくなりますので慎重に作業してください。

更新日を変更するか否かの設定を追加する

軽微な更新をするだけで更新日が変更されないようにできるよう、【ha-Basic】では投稿・固定ページにおいて更新日を変更するか否かの選択ができるようにしています。これをカスタム投稿タイプにも適用するには「functions.php」を編集します。

330行目付近にある

add_meta_box( 'update_level', '更新日の変更', 'html_update_level_custom_box', 'post', 'side', 'high' );

の下に以下の行を追加します

add_meta_box( 'update_level', '更新日の変更', 'html_update_level_custom_box', 'カスタム投稿タイプ名', 'side', 'high' );

※カスタム投稿タイプ名はご自身の環境に合わせて変更してください。また、複数のカスタム投稿タイプへこの機能を追加する場合には行を必要分だけ追加してください

バージョン4.9より前のWordpressではコードに間違いがあると画面が真っ白になってサイトが動作しなくなりますので慎重に作業してください。

2列表示記事リストの編集

【ha-Basic】には任意の場所にショートコードを入れることで新着記事を表示できる機能が搭載されています。

これも通常は「投稿」のみが含まれますのでカスタム投稿タイプも含まれるようにします。

編集するのは「post-list2x5.php」です。

16行目付近に

'post_type' => 'post',
という記述がありますので以下のように変更します
'post_type' => array('post','custom'),

※投稿タイプ名はご自身の環境に合わせてください。複数追加する場合は「,’投稿タイプ名’」を後ろに追加してください。

終わったら保存して完了です


基本的にはこの4つを変更するだけでOKです。

その他プラグインの設定についてはそれぞれのプラグインの解説などを参照ください。

管理画面やWordpressの基本機能を変更してカスタム投稿タイプを使いやすくする方法いろいろ

カスタム投稿タイプ名を「custom」として紹介しますのでご自身の環境に置き換えてください(customとなっているところを変更してください)

【ha-Basic】の場合、コードはすべてテーマの「a-insert-functions.php」へ追記してきます

カスタム投稿タイプの記事公開(更新時)にPing送信するようにする

function cutom_pings_at_publish( $post_id ) {
    wp_schedule_single_event( strtotime( '+10 min' ), 'do_pings', array( $post_id ) );
}

ダッシュボードの新着記事一覧へ追加

function chample_latest_posts( $wp_query ) {
    if ( is_home() && ! isset( $wp_query->query_vars['suppress_filters'] ) ) {
        $wp_query->query_vars['post_type'] = array('post','custom');
    }
}
add_action( 'parse_query', 'chample_latest_posts' );

表示画面のカテゴリーアーカイブ(カテゴリー一覧リスト)に含める

function add_post_category_archive( $wp_query ) {
if ($wp_query->is_main_query() && $wp_query->is_category()) {
$wp_query->set( 'post_type', array('post','custom'));
}
}
add_action( 'pre_get_posts', 'add_post_category_archive' , 10 , 1);

表示画面のタグーアーカイブに含める

function add_post_tag_archive( $wp_query ) {
if ($wp_query->is_main_query() && $wp_query->is_tag()) {
$wp_query->set( 'post_type', array('post','custom'));
}
}
add_action( 'pre_get_posts', 'add_post_tag_archive' , 10 , 1);

管理画面のダッシュボードへ記事数追加

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>';
    }
}

管理画面のアクティビティへ記事数追加

add_filter( 'dashboard_recent_posts_query_args', 'my_dashboard_recent_posts_query_args', 10, 1 );
function my_dashboard_recent_posts_query_args( $query_args ) {
	$query_args['post_type'] = array('post','custom');
	if ( $query_args['post_status'] == "publish" )
		$query_args['posts_per_page'] = 10;
	return $query_args;
  }

RSSフィードにカスタム投稿タイプを含める

function myfeed_request($qv) {
  if (isset($qv['feed']) && !isset($qv['post_type']))
    $qv['post_type'] = array('post','custom');
  return $qv;
}
add_filter('request', 'myfeed_request');

バージョン4.9より前のWordpressではコードに間違いがあると画面が真っ白になってサイトが動作しなくなりますので慎重に作業してください。


いかがでしょうか?これらの設定変更や追加コードなどは実際に私の管理する
で使っているものです。

いつでもご相談・お見積りの依頼を受け付けています

Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。

※一度もココナラを使ったことがない方はココナラへの無料登録が必要です。こちらから登録後、上のリンクをクリックする、またはココナラトップページから「ひまあーと」を検索してお問い合わせください。


【スポンサーリンク】








コメントは受け付けていません。