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

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

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

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

Q&A

解決済

1回答

209閲覧

wordpress カスタム投稿のターム毎にページ表示させたい

you34

総合スコア13

WordPress

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

0グッド

0クリップ

投稿2019/07/01 05:44

「レシピ集」というカスタム投稿を作成し、レシピ集用のタクソノミーとして
"肉"、"魚"、"大豆"、"野菜"などのタームを登録。

ターム毎にレシピ集を表示させたいのですが、
"if($tax_posts):~" のところで 抽出に失敗しているようで、
原因がわかりません。

(参考サイト)http://magical3.com/dai-blog/2017/03/29/post-1027/

すみませんが、ご教授願います。

コードは以下です。

******* function.php ************** ・ ・ // カスタム投稿タイプの追加 register_post_type( 'recipe', array( 'labels' => array( 'name' => __( 'レシピ集' ), 'singular_name' => __( 'recipe' ) ), 'public' => true, 'menu_position' =>6, 'has_archive' => true, ) ); ・ ・ /* レシピ集用タクソノミー */ register_taxonomy( 'recipe_type', // タクソノミーのスラッグ 'recipe', // どの投稿タイプに適用するか array( 'hierarchical' => true, //階層構造にするかどうかの設定 'update_count_callback' => '_update_post_term_count', 'label' => 'カテゴリー', 'singular_label' => 'カテゴリー', 'public' => true, 'show_ui' => true //管理画面のメニューに表示させるか ) );
******* php ************** <section class="recipe_list_page clearfix"> <?php $taxonomy_name = 'recipe_type'; $taxonomys = get_terms($taxonomy_name); if(!is_wp_error($taxonomys) && count($taxonomys)): foreach($taxonomys as $taxonomy): $tax_posts = get_posts(array('post_type' => get_post_type(), 'taxonomy' => '$taxonomy_name' , 'term' => $taxonomy->slug) ); if($tax_posts): ?> <div class="category"> <h2><?php echo esc_html($taxonomy->name); ?> <a><img src="<?php echo esc_html($taxonomy->item-img); ?>" alt="<?php echo esc_html($taxonomy->name); ?>"></a> </h2> <ul> <?php foreach($tax_posts as $tax_post): ?> <li><a href="<?php echo get_permalink($tax_post->ID); ?>"><?php echo esc_html($tax_post->post_title); ?></a></li> <?php endforeach; ?> </ul> </div> <?php endif; ?> <?php endforeach; ?> <?php else : ?> <p>該当する記事はありません</p> <?php endif; ?> </section>

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

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

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

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

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

guest

回答1

0

ベストアンサー

とりあえず1箇所変なところがあります。

PHP

1// $tax_posts = get_posts(array('post_type' => get_post_type(), 'taxonomy' => '$taxonomy_name' , 'term' => $taxonomy->slug) ); 2// ↓ ↓ 3 $tax_posts = get_posts(array('post_type' => get_post_type(), 'taxonomy' => $taxonomy_name , 'term' => $taxonomy->slug) );

投稿2019/07/01 06:57

kei344

総合スコア69364

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

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

you34

2019/07/02 00:16

ご指摘ありがとうございます! 早速修正してみましたが、変化なしでした。 別のサイトではターム毎で表示されたのを確認したのですが、 今回、修正しているサイトではうまく表示されず、$tax_posts をダンプで確認すると array(0) { } となっており、データが取得されていません。 環境とかの問題もあるのでしょうか。。。
you34

2019/07/02 00:34

'post_type' => get_post_type() の中身を確認したところ「page」となっていました。 正しくはカスタム投稿タイプの「recipe」になってないとダメなのですが、 なぜこうなってしまったのか・・
you34

2019/07/02 00:37

$tax_posts = get_posts(array('post_type' => 'recipe', 'taxonomy' => $taxonomy_name, 'term' => $taxonomy->slug ) ); と強制的に「recipe」としたら表示されましたので、ひとまずこれで動かします。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問