WIING WebServiceCloudのWordPress用メディアブログテーマです。-WIING MEDIA

Web制作に関する企業オウンドメディア-WIING media

HOME 〉WordPress 〉WPテーマ制作[10]-archive.phpのカスタマイズ

2019.11.24 Sun

WPテーマ制作[10]-archive.phpのカスタマイズ

WordPressテーマ

WPテーマ制作[10]-archive.phpのカスタマイズ

archive.phpファイルのカスタマイズについての解説

archive.phpページはカテゴリーやタグ、スラッグや日付などのアーカイブ(書庫)を表示する際に優先して読み込まれるファイルです。

このページがない場合、以下のようなWPタグにて取得した情報からのリンクもindex.phpにリダイレクトされます。


カテゴリーのリンク先参照の記述例

$cat = get_the_category(); // カテゴリー情報取得
echo $catName = $cat[0]->name; // 名称取得
echo $link = get_category_link($catId); // リンクURL取得
echo 'カテゴリー:<a href='.$link.'>'.$catName.'</a>';

上記の例では簡単にカテゴリー名とリンク先を取得していますが、そのほかスラッグやIDも取得可能です。

カテゴリー情報は配列で取得するようになります。

archive.phpに以下を記述(カテゴリーリンクから遷移した場合の処理)

基本的な構造は投稿ページ(single.php)や固定ページ(page.php)と同じで大丈夫ですが、ページネーション(ページ送りの目次)をつけるとユーザビリティが上がるので、あわせてページャーの設置記述も併せて記述します。

この例ではプラグインのPageNaviを使用しての記述例ですが、function.phpにページャーの記述を行い、プラグインを使用しない方法のほうがお勧めです。
こちらは記述がすごく長くなるので、今回はプラグイン使用例で紹介していますが、以下サイトを参考にしたページャー設置のほうが細かく制御できるのでよいでしょう。(少し難しいです)

<?php get_header(); ?>
<!--アーカイブ-->
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php if ( have_posts() ) :
the_archive_title( '<h1 class="page-title">', '</h1>' );//カテゴリータイトル
?>
<?php while ( have_posts() ) : the_post();//ループを止めるためのカウント記述
the_title();
the_content();
//get_template_part( 'content', get_post_format() );
//テンプレートフォーマットを読み込む。the_content();はページの内容を表示します。
// ループ処理の停止
endwhile;
else :
get_template_part( 'none', get_post_format() );
// 記事がなければ表示させるnone.phpファイル
endif;
?>

//以下はプラグインPageNaviを使用時のページネーション用記述
//アーカイブ確認時はなくても大丈夫
<?php
$category = get_the_category();// カテゴリー情報取得
$cat_id = $category[0]->cat_ID;
$cat_name = $category[0]->cat_name;
$cat_slug = $category[0]->category_nicename;
$paged = get_query_var('paged') ? get_query_var('paged') : 1;//ページが下層ページの場合の設定
$args = array(
//'posts_per_archive_page' => 3, //件数は管理画面で設定したほうが無難
'paged' => $paged,
'category_name' => $cat_name, //カテゴリー名で抽出する条件
'post_type' => array(
'post',
),
);

$the_query = new WP_Query($args);
?>

<?php if($the_query->have_posts()): ?>
<?php while($the_query->have_posts()) : $the_query->the_post(); ?>
<?php
$st_query = new WP_Query( $args );
if ( $st_query->have_posts() ):
echo'<ol class="cir-lis">';
echo'<li><a href="';
the_permalink();
echo'">';
the_title();
echo'</a></li>';
echo'</ol>';
else:
echo'<p>新しい記事はありません</p>';
endif;
?>
<?php endwhile; ?>
<?php endif; ?>
<?php if(function_exists('wp_pagenavi')){
wp_pagenavi(array('query'=>$the_query));
}
?>
<?php wp_reset_postdata(); ?>

//プラグインPageNaviを使用時のページネーション用記述はここまで

</main><!-- .site-main -->
</div><!-- .content-area -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>
アーカイブページはカテゴリーなどの集約ページ用のテーマファイルです。

掲載情報につきましては当社が独自に調査、検証および収集した情報です。

情報の妥当性や確実性を一切保証するものでなく、情報や内容が訂正や修正、変更されている場合があります。 よって、当社サイトの利用により生じたいかなる損害等についても運営側にて一切の責任を負いません。

掲載情報の修正・変更等をご希望の場合はお知らせください。