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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

5059閲覧

WordPressのターム別の記事一覧表示で、記事数に応じた判定をするには?

Aochan

総合スコア9

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/04/09 03:53

編集2017/04/13 00:14

###前提・実現したいこと
カスタム投稿タイプ(media_info)のタクソノミー(media_info)のターム別の記事一覧ページを作っており、各タームごとに2件ずつyoutubeのiframeが表示されるようになっています。このyoutubeのiframeの動画IDがカスタム投稿タイプのmedia_youtubeというスラッグに格納されています。
そこで、2件を超える投稿数を持つタームについてはmoreボタンを設置して更に表示させようと企てています。
下記のようなソースコードを書いたのですが、2件を超えないタームにもmoreボタンが表示されてしまいます。
どうコードを修正すればよいでしょうか?
また、moreのリンク先についても知見を頂きたいです。そのリンク先を出力するにはどうすればよいでしょうか。
taxonomy-{投稿タイプ名}.phpをつくってその中に標準のループがあればよいのでしょうか?
超初心者なので部分部分でしか理解しておりません。
よろしくお願いします。

###ソースコード

<?php $args = array( 'orderby' => 'term_order', 'order' => 'ASC', 'parent' => 0, 'hierarhical' => 0 ); $my_taxonomy = 'media_info'; $terms = get_terms($my_taxonomy,$args); $count = count( $terms ); if ( ! empty( $terms ) && ! is_wp_error( $terms )): foreach ( $terms as $term ): ?> <h3><?php echo esc_html($term->name); ?></h3> <?php $tax_posts = new WP_Query(array( 'post_type' => 'media_info', 'posts_per_page' => 2, 'tax_query' => array( array( 'taxonomy' => 'media_info', 'terms' => array($term->slug), 'field' =>'slug', ) ), )); if ($tax_posts->have_posts()) : ?> <div class="media-cat"> <?php while ($tax_posts-> have_posts()) : $tax_posts->the_post(); ?> <div class="media_info"> <iframe src="https://www.youtube.com/embed/<?php the_field('media_youtube'); ?>" frameborder="0" allowfullscreen></iframe> </div> <?php endwhile; ?> <div class="clrfx"></div> <?php wp_reset_postdata(); ?> <?php if($count >= 3): ?> //この部分についての質問 <a href="#"><div class="media-more">More</div></a> <?php endif; ?> </div> <?php endif; endforeach; endif; ?>

###補足情報(言語/FW/ツール等のバージョンなど)
wordpress 4.6.1を使っています。

###追記

<?php $args = array( 'orderby' => 'term_order', 'order' => 'ASC', 'parent' => 0, 'hierarhical' => 0 ); $my_taxonomy = 'media_info';//カスタム分類(カスタムタクソノミー) $terms = get_terms($my_taxonomy,$args); if ( ! empty( $terms ) && ! is_wp_error( $terms )): foreach ( $terms as $term ): ?> <h3><?php echo esc_html($term->name); ?></h3> <?php $count = $term->count; //タームの記事数取得 $link = get_term_link($term->slug, $term->taxonomy); //タームのリンクを取得 $tax_posts = new WP_Query(array( 'post_type' => 'media_info', 'posts_per_page' => 2, 'tax_query' => array( array( 'taxonomy' => 'media_info',//カスタム分類(カスタムタクソノミー) 'terms' => array($term->slug), 'field' =>'slug', ) ), )); if ($tax_posts->have_posts()) : ?> <div class="media-cat"> <?php while ($tax_posts-> have_posts()) : $tax_posts->the_post(); ?> <div class="media_info"> <iframe src="https://www.youtube.com/embed/<?php the_field('media_youtube'); ?>" frameborder="0" allowfullscreen></iframe> </div> <?php endwhile; ?> <div class="clrfx"></div> <p><?php echo $term->description; ?></p> <?php wp_reset_postdata(); ?> <?php if($count >= 3): ?> //タームの記事数が3以上ならmoreボタンを表示 <a href="<?php echo $link; ?>"><div class="media-more">More</div></a> <?php endif; ?> </div> <?php endif; endforeach; endif; ?>

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

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

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

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

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

guest

回答1

0

ベストアンサー

タームごとの投稿数が$countに正しく設定されていません。

PHP

1(略) 2$terms = get_terms($my_taxonomy,$args); // 複数のタームを取得 3// $count = count( $terms ); // これだと、タームの種類の数になる 4if ( ! empty( $terms ) && ! is_wp_error( $terms )): 5foreach ( $terms as $term ): // タームを1件ずつ処理 6 $count = $term->count; // タームに属する投稿数取得 7 ?><pre>$count = <?php var_dump($count); ?></pre><?php // 正しく設定されているか出力してみる 8()

moreボタンの動作については、「jQuery 開閉 more」などのワードで検索すると、様々な実装例が出てくるので、まずは好きなのを試してみるといいと思います。


####追記(2017/04/10)
実現したいページのイメージはこんな感じでしょうか?

1.以下のようなページから


<ターム1>記事1
<ターム1>記事2
[more]

<ターム2>記事3

<ターム3>記事4
<ターム3>記事5
[more]


2.ターム1の[more]をクリックすると、以下のようなページへ遷移する


<ターム1>記事1
<ターム1>記事2
<ターム1>記事6
<ターム1>記事7
<ターム1>記事8


投稿2017/04/09 10:31

編集2017/04/10 07:44
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Aochan

2017/04/09 13:51

ありがとうございます!早速試して見ます! また、moreについては開閉ではなく別ページにて表示したいです。 category.phoやtaxonomy.phpで実現できるとは思うのですが...
kei344

2017/04/10 01:37

To: Aochanさん > category.phoやtaxonomy.phpで実現できるとは思うのですが... 記事ページへのリンクを張ればよいのでは? 【【WordPressテンプレートタグ】get_permalink():投稿または固定ページのパーマリンクを取得 | かじこの備忘録】 http://kajico.kajilabo.net/get_permalink/
退会済みユーザー

退会済みユーザー

2017/04/10 07:50

確認したい事項を回答に追記しました。 質問者様の実現したいページ遷移はこんな感じでしょうか? もしくは、アーカイブページから個別投稿ページへ遷移するイメージであれば、kei344さんのコメントのとおり、記事ページへのリンクを貼ればOKです。 言葉で表現すると、「ターム一覧ページから個別タームの詳細ページへ遷移する」みたいなイメージ?
Aochan

2017/04/11 09:13 編集

YoutubeのIframeの羅列なので、記事ページへのリンクはいらないんです。 ターム一覧ページ(各ターム2記事表示)から個別ターム記事一覧ページ(一つのタームの記事全てを数件ごとにページネーションを用いて全表示)へと遷移させたいです。 miz様の認識で正しいです。 kei344様も何かわかれば教えていただけたら幸いです。 引き続き、ご回答お願い致します。
退会済みユーザー

退会済みユーザー

2017/04/12 07:47

(1)「ターム一覧ページ」として固定ページ(スラッグ:termlist)を作成し、質問文に書かれているコードをpage-termlist.phpに記入 (2)「個別ターム記事一覧ページ」として、taxonomy-media_info.phpを作成 として、実装するといいのではないかと思います。 この実装なら、[more]リンクはget_term_link()で出力できるはずです。
Aochan

2017/04/12 11:30

miz様、ありがとうございます。 おかげさまでターム一覧ページについては完成致しました。 taxonomy-media_info.phpを書いてサーバ上においたのですが、get_term_link()で取得したリンク先にアクセスすると404を吐いてしまいます・・・。有名なパーマリンクの空更新は行ってみました。 とりあえず、最初の問題は解決したのでベストアンサーを差し上げる予定です。 もしよろしければ、何か404についてもお知恵をお貸しいただけますでしょうか?
退会済みユーザー

退会済みユーザー

2017/04/12 11:47

get_term_link()はターム一覧ページに書かれたのですよね? よろしければ、現在書かれているコード(get_term_link()を含むコード)を質問文に追記していただけますか。
退会済みユーザー

退会済みユーザー

2017/04/13 03:14

追記ありがとうございます。ソースコードを確認しました。 get_term_linkの使い方に問題はないと思います。 今更ですが、カスタム投稿タイプとタクソノミーの名前について気になることがあります。 2つはどちらとも同名media_infoでしょうか。 だとすると、404エラーの原因はそれかもしれません。 可能であれば、どちらかの名前を変更して試してみてはどうでしょうか。
Aochan

2017/04/13 03:35

miz様 本当にありがとうございます!そのとおりでした。404が解消されました。 お世話になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問