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]