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

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

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

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

PHP

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

Q&A

解決済

1回答

1732閲覧

Wordpress子カテゴリーを画像付きリンクで一覧表示したい

sazami

総合スコア18

WordPress

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

PHP

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

0グッド

0クリップ

投稿2020/11/03 01:38

編集2020/11/03 01:40

親カテゴリ―ページ内で、子カテゴリーの一覧を画像付きで表示してカタログとして使用したいのですが、うまくいきません。
やりたい事
1.子カテゴリータイトル表示
2.タイトルに子カテゴリーぺージへのリンクをつける
3.子カテゴリー内の最初の記事のサムネイルをイメージ画像として表示
4.サムネイルに子カテゴリーぺージへのリンクをつける
5.商品が登録されていない子カテゴリーは非表示
6.Category Order and Taxonomy Terms Order で並べ替えた順番で表示する

現在試したコードは2パターンで
1つ目の場合1~4はできておりますが5.6がうまく機能しません。
並び順はスラッグ名の昇順になっしまいorderbyが効かない

php

1<?php 2$this_cat_children = get_term_children( $cat, 'category' );//子カテゴリを取得する 3if($this_cat_children): 4foreach($this_cat_children as $children)://子カテゴリのループ開始 5$children_obj = get_category( $children );//子カテゴリの情報を取得 6$name = $children_obj->cat_name;//カテゴリ名を取得 7$category_link = get_category_link( $children );//カテゴリへのリンクを取得 8$args = array( 9 'child_of' => $thisCat->cat_ID, 10 'orderby' => 'term_order', 11 'order' => 'ASC', 12); 13?> 14<div class="list"> 15<span class="title"><a href="<?php echo $category_link;?>"><?php echo $name;?></a></span> 16<?php 17$args = array( 18 'posts_per_page' => 1, 19 'category' => $children, 20 ); 21$myposts = get_posts( $args );//子カテゴリの記事を格納 22foreach ( $myposts as $post ) : setup_postdata( $post );//記事のループ開始 ?> 23<span class="thumbnail"> 24 <a href="<?php echo $category_link;?>"><?php the_post_thumbnail('thumbnail'); ?></a> 25 </span> 26<?php endforeach; //記事のループ終了 27wp_reset_postdata();?> 28 29</div> 30<?php 31endforeach;//子カテゴリのループ終了 32else: 33endif; 34?>

2つ目の場合1.2.5.6ができておりますが、色々追加で試しても3のサムネイルがうまく取得できなかったので、
とりあえずタイトルとリンクのみが表示されている状態です。

php

1<?php 2$args=array( 3'parent' => '67',//親カテゴリーのID 4); 5$term_id = 67;//親カテゴリーのID 6$taxonomy_name = 'category'; 7$termchildren = get_term_children( $term_id, $taxonomy_name ); 8$categories = get_categories($args); 9foreach($categories as $category): 10?> 11 12<li><a href="<?php echo get_term_link( $category, $taxonomy_name );?>"><?php echo $category->cat_name;?></a></li> 13 14<?php endforeach; ?>

1つ目と2つ目が組み合わされば希望の表示ができるのですが、うまくできません。
このコードにかかわらず、別の方法でも構いませんので、ご教授いただけると助かります。
よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

php

1$this_cat_children = get_term_children( $cat, 'category' ); 23$this_cat_children = get_terms('category',array( 4 'child_of' => $cat, 5 'orderby' => 'term_order', 6 'order' => 'ASC' 7));

投稿2020/11/03 04:49

KazuhiroHatano

総合スコア7802

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

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

sazami

2020/11/03 05:07

早速のご回答、誠にありがとうございます。 上記PHPに変更してみましたが、 「Recoverable fatal error: Object of class WP_Term could not be converted to string in...」 とエラーが画面上に表示されてしまいました。 この箇所以外の変更が必要なのでしょうか? 引き続きご教授いただけると助かります。
KazuhiroHatano

2020/11/03 05:19

get_termsはWP_Termオブジェクトの配列を取得してるので get_categoryしなくていいです get_category_link に使うIDはterm_idプロパティで
sazami

2020/11/03 05:37 編集

自分なりに試してみましたが、依然エラーが解消されません。 知識が浅く、回答内容を見ても、どこを修正すべきなのか見当がつきませんので、具体的にどこをどのように修正すべきなのか教えていただけると助かります。 たびたびで申し訳ございません。
KazuhiroHatano

2020/11/03 06:18 編集

foreach($this_cat_children as $children_obj): $children = $children_obj->term_id;
sazami

2020/11/03 06:12

ご回答、ありがとうございます。 ご指摘部分を修正したところ、エラーは解消されましたが、商品のサムネイルが全て同じ写真になり、リンクも空になっおり、ループがうまく取得出来ていない模様です。 下記コードに修正しましたが、どこが違っているでしょうか? <?php $this_cat_children = get_terms('category',array( 'child_of' => $cat, 'orderby' => 'term_order', 'order' => 'ASC' )); if($this_cat_children): foreach($this_cat_children as $children_obj): $children = $children_ob->term_id; $name = $children_obj->cat_name;//カテゴリ名を取得 $category_link = get_category_link( $children );//カテゴリへのリンクを取得 $args = array( 'child_of' => $thisCat->cat_ID, ); ?> <div class="list"> <span class="title"><a href="<?php echo $category_link;?>"><?php echo $name;?></a></span> <?php $args = array( 'posts_per_page' => 1, 'category' => $children, ); $myposts = get_posts( $args );//子カテゴリの記事を格納 foreach ( $myposts as $post ) : setup_postdata( $post );//記事のループ開始 ?> <span class="thumbnail"> <a href="<?php echo $category_link;?>"><?php the_post_thumbnail('thumbnail'); ?></a> </span> <?php endforeach; //記事のループ終了 wp_reset_postdata();?> </div> <?php endforeach;//子カテゴリのループ終了 else: endif; ?> 下記のように修正しましたが、どこが間違っていますでしょうか?
sazami

2020/11/03 06:49

大変失礼致しました。 サムネイルとリンクは取得できましたが、子カテゴリーのタイトルが取得できませんでした。 <?php echo $name;?>をループ部分に入れてみたのですが...
KazuhiroHatano

2020/11/03 06:55

$children_obj->cat_name; ↓ $children_obj->name;
sazami

2020/11/03 07:01

出来ました!ありがとうございます。 この度は貴重なお時間を頂き、ありがとうございました。 感謝致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問