質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.78%

wordpressでカスタム投稿タイプのターム一覧を年別で表示したい。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,479

score 14

前提・実現したいこと

現在WordPressでカスタム投稿のタームを年別に一覧表示して、サイドバーのタームを選びクリックするとすでに用意してある"taxonomy-intag.php"のページに飛び選択したタームが年別ごとにリストに表示させているようにしたいです。

下記の画像はWordPress化する前に用意しておいた年別予定のレイアウトです。
イメージ説明

※カスタム投稿自体を最近知ったばかりなのでtaxonomy.phpやアーカイブなどについての知識がありません。

みなさまのお力をお貸しください。

HTMLソース

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<section class="Section l-content">
<div class="l-main">
<div class="archivesTab">
<nav class="archives-Nav">
<ul class="archives-navList">
<li class="archives-nav
Item">
<a class="archives-nav__Link" href="#">2015</a>
</li>

<li class="archives-navItem">
<a class="archives-nav
Link" href="#">2016</a>
</li>

<li class="archives-navItem">
<a class="archives-nav
Link" href="#">2017</a>
</li>
</ul>
</nav>
</div>

<section class="archivesContent">
<ol class="NewsList">
<li class="NewsListitem event">
<span class="NewsList
cat attention is-Event">ぶどう</span>
<time class="NewsListhead" datatime="2016-06-29">2016.06.29</time>
<span class="NewsList
body">最新のニュースを入力してください。</span>
</li>

<li class="NewsListitem other">
<span class="NewsList
cat is-Other">みかん</span>
<time class="NewsListhead" datatime="2016-06-29">2016.06.29</time>
<span class="NewsList
body">最新のニュースを入力してください。</span>
</li>

<li class="NewsListitem media">
<span class="NewsList
cat is-Media">いちご</span>
<time class="NewsListhead" datatime="2016-06-29">2016.06.29</time>
<span class="NewsList
body">最新のニュースを入力してください。</span>
</li>

<li class="NewsListitem media">
<span class="NewsList
cat is-Media">みかん</span>
<time class="NewsListhead" datatime="2016-06-29">2016.06.29</time>
<span class="NewsList
body">最新のニュースを入力してください。</span>
</li>
</ol>

<ul class="listPager">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ul>
</section>
</div>

<div class="l-sub">
<div class="l-flex">
<div class="subcontent">
<h2 class="subcontent-ttl">ターム一覧</h2>
<nav class="category-Nav">
<ul class="category-List">
<li class="category-Item">
<a class="category-Link" href="#">
いちご
</a>
</li>

<li class="category-Item">
<a class="category-Link" href="#">
りんご
</a>
</li>

<li class="category-Item">
<a class="category-Link" href="#">
ぶどう
</a>
</li>

<li class="category-Item">
<a class="category-Link" href="#">
みかん
</a>
</li>
</ul>
</nav>
</div>

<div class="subcontent">
<h2 class="subcontent-ttl">最新のニュース</h2>
<nav class="category-Nav">
<ul class="category-List">
<li class="category-Item">
<a class="category-Link" href="#">
新しい投稿
</a>
</li>

<li class="category-Item">
<a class="category-Link" href="#">
新しい投稿1
</a>
</li>
</ul>
</nav>
</div>
</div>
</div><!-- l-sub end -->
</section>
</body>
</html>

```WordPressソース(functions.php)  
//カスタム投稿  
function create_post_type(){  
register_post_type('info',  
array(  
'labels' => array(  
'name'   => 'お知らせ',  
'singular_name' => 'お知らせ'  
),  
'public' => true,  
'menu_position'  => 5,  
'hierarchicla' => false,  
'has_archive' => true,  
'supports' => array(  
'title',  
'thumbnail',  
)  
)  
);  
}  

add_action('init','create_post_type',1);  

//カスタム投稿の分類を作成  
function create_taxonomies(){  

register_taxonomy('intag', array('info'),  
array(  
'label' => 'お知らせタグ',  
'labels' => array(  
'add_new_item' => '新規タグを追加',  
),  
'public' => true,  
'hierarchical' => false,  
'rewrite' => array('with_front' => false),  
)  
);  

}  

add_action('init','create_taxonomies',1)  
<?php get_header(); ?>  

<section class="Section l-content">  
<div class="l-main">  
<div class="archivesTab">  
<nav class="archives-Nav">  
<ul class="archives-nav__List">  
<?php wp_get_archives();?>  
</ul>  
</nav>  
</div>  

<?php  
$taxonomy_slug = 'intag';  

$args = array(  
'post_type' => 'info', //カスタム投稿タイプ   
'orderby'   => 'date',  
'posts_per_page' => -1,  
'tax_query' => array(  
array(  
'taxonomy' => $taxonomy_slug,  
'field'    => 'slug',  
);  

<?php  
if( have_posts()) : while ( have_posts() ) : the_post(); ?>  
<section class="archivesContent">  
<ol class="NewsList">  
<li class="NewsList__item event">  
<span class="NewsList__cat attention is-Event"></span>  
<time class="NewsList__head" datatime=""><?php get_post_time('Y.m.d'); ?></time>  
<span class="NewsList__body"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></span>  
</li>  
</ol>  
<?php endwhile; endif; ?>  

<?php wp_pagenavi(); ?>  
</section>  
</div>  

<div class="l-sub">  
<div class="side-column">  
<section class="side-section">  
<h2 class="side-section_ttl">New Post<small>最近のお知らせ</small></h2>  
<ul class="side-section_nav">  
<?php  
$args = array(  
'numberposts' =>  5,   
'post_type'   => 'info'   
);  

$customPosts = get_posts($args);  
if($customPosts) : foreach($customPosts as $post) : setup_postdata($post);  
?>  
<li class="side-section_list">  
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>  
</li>  
<?php endforeach; ?>  
<?php else: ?>  
<p>記事がありませんでした。</p>  
<?php endif;  
wp_reset_postdata(); ?>  
</ul>  
</section>  

<section class="side-section">  
<h2 class="side-section_ttl">Archive<small>タグ一覧</small></h2>  
<ul class="side-section_nav">  
<?php  
$args = array(  
'taxonomy' => 'intag',  
'orderby'  => 'info',  
'order'   => ' ASC',  
'hide_empty' => false,  
);  
$the_query = new WP_Term_Query($args);  
foreach($the_query->get_terms() as $term){  
$term_link = get_term_link($term->slug,'intag');  
?>  
<li><a href="<?php echo $term_link; ?>"><?php echo $term->name; ?></a></li>  
<?php  
}   
?>    
</ul>  
</section>  
</div>  
</div>  
</article>  
</section>  

<?php get_footer(); ?>  

試したこと

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

あれからいろいろやり方について検索をしてみたところターム情報について
<?php
$args = array(
'taxonomy' => 'タクソノミー名',
'orderby'  => 'カスタム投稿名',
'order'   => ' ASC',
'hide_empty' => false,
);
$the_query = new WP_Term_Query($args);
foreach($the_query->get_terms() as $term){ // 繰り返し処理の開始
$term_link = get_term_link($term->slug,'タクソノミー名'); // タクソノミーの指定
?>
<li><a href="<?php echo $term_link; ?>"><?php echo $term->name; ?></a></li>
<?php
}
?>   

<?php echo $term->count; ?>
でタグの投稿数を調べたところ0と表示されており、編集画面でタグの箇所にslug名を入れましたらカウントされるようになりました(タグの箇所もスラッグ名と同様に設定した名前で入れる必要がるのを知りませんでした)

その後サイドバーに表示されたターム名をクリックすると無事にtaxonomy.phpのページで投稿内容が表示されましたので、
<ul></ul>の部分に<?php wp_get_archives(array('post_type' => 'カスタム投稿名', 'type' => 'monthly')); ?>をいれ月ごとにリンクを表示させました。リンクの月をクリックするとarchives.phpのページに飛ぶので、そちらのページにtaxonomy.phpと同じソースにしました。

ページネーションについてはプラグインではなくソースが探したらありましたのでそちらを利用しました。
あとはCSSを調整していけばいいかとおもいました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る