WordPressでカテゴリーページを充実させたい場合、カテゴリページを固定ページで置き換えたり、プラグイン(Rich Text Tags)でカテゴリページを編集できます。
今回は、「固定ページ」を読み込ませるように設定してみます。
ステップ1:「category.php」を作成
カテゴリーページを開いたときに、「category.php」というファイルがあると、自動的に「category.pbp」の内容が表示されます。
category.phpを作成するには、サーバー上から、「wp-content / themes / {現在のテーマ} /」にcategory.phpのファイルを新規に作成してください。
※category.phpがすでにある場合は、作成しなくてOK
ステップ2:category.phpに固定ページを読み込む処理を追記
次の処理を、category.phpの任意の場所にコピペしてください。
<?php
$category = get_category($cat);
$category_slug ="category-".$category->slug;
$page_info = get_page_by_path( $category_slug);
if(isset($page_info)){
$page = get_post($page_info);
echo apply_filters('the_content',$page->post_content);
}
?>
ステップ3:固定ページを用意する
固定ページを作成して、カテゴリページで読み込まれるようにするためには、「固定ページのスラッグ(URLのところの名前)」が重要です。
ステップ2でのコードで、「category-カテゴリのスラッグ」と同じスラッグを持つ固定ページのコンテンツを表示する処理をしています。
例えば、次のような「カテゴリ」と「固定ページ」のスラッグが存在するときに、固定ページが読み込まれて表示されます。
- カテゴリページのスラッグ:job-change
- 読み込まれる固定ページのスラッグ:category-job-change
注意点
- 【注意点1】親ページを設定している固定ページでは動作しません。
※親ページを設定していると、スラッグが想定と異なるから - 【注意点2】固定ページは非公開設定にしましょう
※公開してしまうとカテゴリページと、固定ページが重複コンテンツになってしまうため
例:https://exmample.com/job-change」と「https://exmample.com/category-job-change」どちらも公開されている状態になる。
※リダイレクトで対処する方法もあるにはある
お疲れ様でした。
最後にXeory_Extensionテーマでのcategory.phpのコードを置いておきます。
<?php get_header(); ?>
<div id="content">
<div class="wrap">
<div id="main" <?php bzb_layout_main(); ?>>
<div class="main-inner">
<!-- start original category -->
<?php
$category = get_category($cat);
$category_slug = 'category-'.$category->slug;
$page_info = get_page_by_path($category_slug);
?>
<?php if (isset($page_info)&& !is_paged()): ?>
<article <?php post_class(); ?>>
<header class="post-header">
<?php $page = get_post($page_info); ?>
<h1 class="post-title" itemprop="headline"><?php echo $page->post_title; ?></h1>
</header>
<section class="post-content" itemprop="text">
<?php echo apply_filters('the_content', $page->post_content); ?>
</section>
</header>
</article>
<h2 class="post-title"><?php bzb_title(); ?>の新着記事一覧</h2>
<!-- 固定ページがないなら、カテゴリページのヘッダーやコンテンツを表示 -->
<?php else: ?>
<section class="cat-content">
<header class="cat-header">
<h1 class="post-title"><?php bzb_title(); ?></h1>
</header>
<?php if (is_category()) {
?>
<?php bzb_category_description();
?>
<?php
} ?>
<?php bzb_category_description(); ?>
<!-- カテゴリの説明文 -->
<?php if (is_category() && //カテゴリページの時
!is_paged() && //カテゴリページのトップの時
category_description()) : //カテゴリの説明文が空でない時 ?>
<div class="category-description"><?php echo category_description(); ?></div>
<?php endif; ?>
</section>
<?php endif; ?>
<!-- end original category -->
<?php
$t_id = get_category(intval(get_query_var('cat')))->term_id;
$cat_option = get_option('cat_'.$t_id);
?>
<div class="post-loop-wrap">
<?php
if (have_posts()) :
while (have_posts()) : the_post();
$cf = get_post_meta($post->ID); ?>
<article id="post-<?php echo the_ID(); ?>" <?php post_class(); ?> itemscope="itemscope" itemtype="http://schema.org/BlogPosting">
<header class="post-header">
<div class="cat-name">
<span>
<?php
$category = get_the_category();
echo $category[0]->cat_name;
?>
</span>
</div>
<h2 class="post-title" itemprop="headline"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
</header>
<div class="post-meta-area">
<ul class="post-meta list-inline">
<li class="date" itemprop="datePublished" datetime="<?php the_time('c');?>"><i class="fa fa-clock-o"></i> <?php the_time('Y.m.d');?></li>
</ul>
<ul class="post-meta-comment">
<li class="author">
by <?php the_author(); ?>
</li>
<li class="comments">
<i class="fa fa-comments"></i> <span class="count"><?php comments_number('0', '1', '%'); ?></span>
</li>
</ul>
</div>
<?php if (get_the_post_thumbnail()) {
?>
<div class="post-thumbnail">
<a href="<?php the_permalink();
?>" rel="nofollow"><?php the_post_thumbnail('big_thumbnail');
?></a>
</div>
<?php
} ?>
<section class="post-content" itemprop="text">
<?php the_excerpt(); ?>
</section>
<footer class="post-footer">
<a class="morelink" href="<?php the_permalink(); ?>" rel="nofollow">続きを読む ≫</a>
</footer>
</article>
<?php
endwhile;
else :
?>
<article id="post-404"class="cotent-none post" itemscope="itemscope" itemtype="http://schema.org/BlogPosting">
<section class="post-content" itemprop="text">
<?php echo get_template_part('content', 'none'); ?>
</section>
</article>
<?php
endif;
?>
<?php if (function_exists('pagination')) {
pagination($wp_query->max_num_pages);
} ?>
</div><!-- /post-loop-wrap -->
</div><!-- /main-inner -->
</div><!-- /main -->
<?php get_sidebar(); ?>
</div><!-- /wrap -->
</div><!-- /content -->
<?php get_footer(); ?>
[su_note note_color="#00BFFF" text_color="#ffffff"]
人気の記事
Google検索の変遷から見えてくる「Googleがキュレーション化する日」
[/su_note]
Google検索の変遷から見えてくる「Googleがキュレーション化する日」
[/su_note]
