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

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

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

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

Q&A

1回答

5057閲覧

カスタム投稿内に別のカスタム投稿を表示したい

sat2000

総合スコア8

WordPress

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

0グッド

0クリップ

投稿2017/02/08 14:36

編集2022/01/12 10:55

###前提・実現したいこと
カスタム投稿A(ポスト名:各球団、スラッグ:baseball
タクソノミー(分類名:球団の分類、スラッグ:'baseball_tax')
ターム(ターム名:阪神チーム、スラッグ:'hanshin')と(ターム名:ソフトバンクチーム、スラッグ:'softbank')

カスタム投稿B(ポスト名:各球団ブログ、スラッグ:'baseballblog')
タクソノミー(分類名:球団の分類、スラッグ:'baseballblog_area')
ターム(ターム名:阪神、スラッグ:'hanshinblog')と(ターム名:ソフトバンク、スラッグ:'softbankblog')

カスタム投稿Aのターム(阪神チーム)を表示している時は、同ページ内にカスタム投稿Bのターム(阪神ブログ)の一覧も表示。
カスタム投稿Bのターム(ソフトバンクチーム)を表示している時は、同ページ内にカスタム投稿Bのターム(ソフトバンクブログ)の一覧を表示したいのです
現在、single-baseball.phpにて下記の'<div id=“contenair”>'内でカスタム投稿Aのターム阪神チームや、タームソフトバンクチームを表示しています。
その下の'<div class="reload_contents">'内でブログを表示しています。
ですが阪神、ソフトバンク両方のブログが表示されています。

簡単に言うとその球団、球団に応じた球団のブログを表示させたいのです。
今後ほかの球団も増やしたいのですが、条件分岐とかがいまいちわからず行き詰まってなかなか実現できずに困っています。

初心者質問で申し訳ないのですが、どなたかご教示いただけませんでしょうか。

###発生している問題・エラーメッセージ

エラーメッセージ

###該当のソースコード

<div id="contenair"> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <p><?php the_title(); ?></p> <p><?php the_content(); ?></p> <?php endwhile; endif;?> </div> <div class="reload_contents"> <?php $args = array( 'numberposts' => 5, //表示(取得)する記事の数 'post_type' => array(‘baseballblog') //投稿タイプの指定 ); $customPosts = get_posts($args); if($customPosts) : foreach($customPosts as $post) : setup_postdata( $post ); ?> <dl class="reloadCont"> <dt class="reload_date"><?php the_time('Y-m-d'); ?></dt> <dt class="catego"> <?php $terms = get_the_terms( $post->ID, 'baseballblog_area' ); if ($terms && ! is_wp_error($terms)): ?> <?php foreach($terms as $term): ?> <span id="blog_cate" class="<?php echo $term->slug; ?>"> <a href="<?php echo get_term_link( $term->slug, 'baseballblog_area'); ?>"> <?php echo $term->name; ?></a> </span> <?php endforeach; ?> <?php endif; ?> </dt> <dd class="reload_tit"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd> </dl> <?php endforeach; ?> <?php else : //記事が無い場合 ?> 記事はまだありません。 <?php endif; wp_reset_postdata(); //クエリのリセット ?> </div>

###試したこと
課題に対してアプローチしたことを記載してください

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

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

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

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

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

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

kei344

2017/02/08 14:42

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
退会済みユーザー

退会済みユーザー

2017/02/08 15:07

ひとつのカスタム分類をふたつのカスタム投稿で共有することもできるはずです。質問者様の場合は、そのようにしたほうが後々扱う球団が増えた場合も管理しやすいのではないかと思いました。
guest

回答1

0

記事のループ内で get_the_terms してそれを使って tax_query にスラッグを渡すとかどうでしょう。

PHP

1$single_terms = get_the_terms( 0, 'baseball_tax' ); 2if ( $single_terms && ! is_wp_error( $single_terms ) ) { 3 $single_slug = $single_terms[ 0 ]->slug.'blog'; // これを使って絞込み 4}

【get_the_terms:WordPress私的マニュアル】
http://elearn.jp/wpman/function/get_the_terms.html

PHP

1array( 2 'taxonomy' => 'baseballblog_area', 3 'terms' => $single_slug, // さっきの 4 'field' => 'slug', 5 'operator' => 'IN', 6)

【WordPressの新機能 複数タクソノミークエリーまとめ | Simple Colors】
http://www.warna.info/archives/287/

【tax_queryを使ってget_postsしたら全く結果が取得できなくてはまった件 | なかちょんブログ】
http://blog.nakachon.com/2014/10/27/dont-use-name-field-tax-query-in-japanese/

投稿2017/02/10 15:39

編集2017/02/10 15:43
kei344

総合スコア69364

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

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

sat2000

2017/02/11 09:21

ありがとうございます! 自分ではそこまで考えつかなくて。 挑戦してみたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問