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

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

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

2251閲覧

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

Asibe

総合スコア14

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2017/05/11 11:40

###前提・実現したいこと
現在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-nav__List"> <li class="archives-nav__Item"> <a class="archives-nav__Link" href="#">2015</a> </li>
<li class="archives-nav__Item"> <a class="archives-nav__Link" href="#">2016</a> </li> <li class="archives-nav__Item"> <a class="archives-nav__Link" href="#">2017</a> </li> </ul>
</nav> </div> <section class="archivesContent"> <ol class="NewsList"> <li class="NewsList__item event"> <span class="NewsList__cat attention is-Event">ぶどう</span> <time class="NewsList__head" datatime="2016-06-29">2016.06.29</time> <span class="NewsList__body">最新のニュースを入力してください。</span> </li>
<li class="NewsList__item other"> <span class="NewsList__cat is-Other">みかん</span> <time class="NewsList__head" datatime="2016-06-29">2016.06.29</time> <span class="NewsList__body">最新のニュースを入力してください。</span>
</li>
<li class="NewsList__item media"> <span class="NewsList__cat is-Media">いちご</span> <time class="NewsList__head" datatime="2016-06-29">2016.06.29</time> <span class="NewsList__body">最新のニュースを入力してください。</span>
</li>
<li class="NewsList__item media"> <span class="NewsList__cat is-Media">みかん</span> <time class="NewsList__head" 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)

```上記のHTMLソースをWordPress化 <?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/ツール等のバージョンなど)
より詳細な情報

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

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を調整していけばいいかとおもいました。

投稿2017/05/12 11:46

Asibe

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問