WP カテゴリページに文章追加 カスタム投稿タイプ追加でリスト下にカテゴリー記事表示

カテゴリーページが上位表示しているので、さらに上位にくるようにカテゴリーページにコンテンツを挿入すべく設定する。

テーマはSimplicity、カテゴリーの記事リストの上には「説明」を書けば上に表示されるので、記事リストの下に新たにカスタム投稿タイプを追加して表示させるようにする。

ちなみにカテゴリーの「説明」はHTML・ショートコードも入力可能なので有効活用する。

functions.php カスタム投稿タイプ追加

functions.phpに以下を挿入してカスタム投稿タイプを追加して、カテゴリーページの下に記事を書いて表示させる記事ページを作る。

// カテゴリーに記事を書く カスタム投稿タイプ
add_action( 'init', 'category_article' );
function category_article() {
	register_post_type( 'categorys',
		array(
		'labels' => array(
			'name' => __( 'カテゴリー記事' ),
			'singular_name' => __( 'categorys' )
			),
		'public' => false,//パーマリンク無し
		'show_ui' => true,//管理画面に表示させる
		'menu_position' =>5,
		)
	);
}

register_post_type:categorys

カテゴリーファイル(Simplicityはlist.php)で使うpost_type=categorys

categorysは好きな名前にする。

‘public’ => false

パーマリンクを作成しないでカスタム記事を作る

‘show_ui’ => true

管理画面に表示させる。

‘menu_position’ =>5

管理画面のどこに表示させるか、5は上から4番目に表示された。

以下のようにWP管理画面に「カテゴリー記事」が追加された。新規追加で記事を作成していく。この時にカテゴリーの「スラッグ」とカテゴリー記事の「スラッグ」を同じものにしておくと該当カテゴリーのページでこのカテゴリー記事が表示されるようになる。

functions.php カスタム投稿タイプ追加

list.php

テーマSimplicityの場合はcategory.phpがlist.phpを参照するようになっていますが、他のテーマの場合はcategory.phpを編集すればよさそう。

こちらでカテゴリー記事を書いた内容を表示させるように設定する。上にはカテゴリーの「説明」の文章が表示されるので、カテゴリーリストの下に表示させるようにする。

</div><!-- /#list -->

の下に追加してみました。

<div class="article">
<?php
//カスタム投稿タイプ カテゴリー記事
$query = new WP_Query('post_type=categorys&name='.get_category( get_query_var( 'cat' ), false )->slug);
if($query->have_posts()): while($query->have_posts()): $query->the_post();
the_content();
endwhile; endif; wp_reset_query();
?>
</div>

これをするだけで各カテゴリーページの下にカテゴリー記事が表示されるようになった!

該当カテゴリー記事が無い場合は表示されない。

追記:これだとトップページにも表示されてしまった・・・

メンドウなので適当にこのようにしてみる↓

<div class="article">
<?php
//カスタム投稿タイプ カテゴリー記事
$query = new WP_Query('post_type=categorys&name='.get_category( get_query_var( 'cat' ), false )->slug);
if($query->have_posts() and get_category( get_query_var( 'cat' ), false )->slug !=''): while($query->have_posts()): $query->the_post();
the_content();
endwhile; endif; wp_reset_query();
?>
</div>

シェアする

  • このエントリーをはてなブックマークに追加

フォローする