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

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

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

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

Q&A

解決済

1回答

2916閲覧

wordpressカスタムフィールドを使用したカテゴリページ

sanasasasa

総合スコア12

WordPress

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

0グッド

0クリップ

投稿2016/12/11 06:20

編集2016/12/11 07:56

Advanced Custom Fieldsを使用してカテゴリに画像と、テキストのカスタムフィールドを設置しました。

親カテゴリ
-子カテゴリA(カスタムフィールド設置)
-投稿a
-投稿b
-子カテゴリB(カスタムフィールド設置)
-投稿c
-投稿d
上記のような形にしています。

親カテゴリのページを表示する際に、上から順に
親カテゴリは表示せずに、

子カテゴリAのカスタムフィールドの内容
投稿aのタイトルと内容、アイキャッチ画像
投稿bのタイトルと内容、アイキャッチ画像

子カテゴリBのカスタムフィールドの内容
投稿cのタイトルと内容、アイキャッチ画像
投稿dのタイトルと内容、アイキャッチ画像

と、表示したいのです。
しかし、カテゴリのカスタムフィールドの内容だけ、または投稿の内容だけが表示され
一緒に表示することができません。

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

カテゴリのカスタムフィールド内容と、 子カテゴリの投稿内容が別々で表示されます。 子カテゴリAのカスタムフィールドの内容 子カテゴリBのカスタムフィールドの内容 投稿aのタイトルと内容、アイキャッチ画像 投稿bのタイトルと内容、アイキャッチ画像 投稿cのタイトルと内容、アイキャッチ画像 投稿dのタイトルと内容、アイキャッチ画像 この表示になります。

###該当のソースコード
カスタムフィールドの内容は下記コードで表示しております。

<?php $cat = get_queried_object_id(); // 現在のカテゴリーのID $args = array( 'parent' => $cat ); // 子カテゴリーを取得(孫なし) $childs = get_categories( $args ); foreach( $childs as $child ) { // 子カテゴリーそれぞれ $cat_id = 'category_' . $child->term_id; // カテゴリー(ターム)を指定 $image = get_field( 'title_img', $cat_id ); echo '<img src="' . $image. '">' . "\n"; $txt = get_field( 'title_text', $cat_id ); echo $txt, "\n"; } ?>

###試したこと

<?php if(have_posts()): while(have_posts()):the_post(); ?> <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1> <p><?php the_content('Read more'); ?></p> <?php endwhile; endif; ?>

このコードを一緒に読み込んだところ、投稿記事一覧が全て表示されました。

foreachを入れ子にして、投稿を読み込めば良いと思うのですが、まとめようとするとエラーとなります。

<?php $cat = get_queried_object_id(); // 現在のカテゴリーのID $args = array( 'parent' => $cat ); // 子カテゴリーを取得(孫なし) $childs = get_categories( $args ); foreach( $childs as $child ) { // 子カテゴリーそれぞれ $cat_id = 'category_' . $child->term_id; // カテゴリー(ターム)を指定 $image = get_field( 'title_img', $cat_id ); echo '<img src="' . $image. '">' . "\n"; $txt = get_field( 'title_text', $cat_id ); echo $txt, "\n"; <?php if(have_posts()): while(have_posts()):the_post(); ?> <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1> <p><?php the_content('Read more'); ?></p> <?php endwhile; endif; ?> } ?>

エラー内容
Parse error: syntax error, unexpected '<' in /category.php on line 15
うまく表示する方法はありませんか?
よろしくお願いいたします。

修正のご指摘ありがとうございました。
どうぞよろしくお願いいたします。

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

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

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

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

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

kei344

2016/12/11 07:32 編集

質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。また、「まとめようとするとエラーとなります。 」のコードとエラー文を追記ください。
guest

回答1

0

ベストアンサー

WordPressのカスタマイズにはPHPの知識が必須なため、入門書などを読まれることをお勧めします。

PHP

1<?php 2 $cat = get_queried_object_id(); // 現在のカテゴリーのID 3 $args = array( 'parent' => $cat ); // 子カテゴリーを取得(孫なし) 4 $childs = get_categories( $args ); 5foreach( $childs as $child ) { // 子カテゴリーそれぞれ 6 $cat_id = 'category_' . $child->term_id; // カテゴリー(ターム)を指定 7 $image = get_field( 'title_img', $cat_id ); 8 echo '<img src="' . $image. '">' . "\n"; 9 $txt = get_field( 'title_text', $cat_id ); 10 echo $txt, "\n"; 11// <?php if(have_posts()): while(have_posts()):the_post(); ?> 12// ↑ PHPの文の中なのでおかしい 13// ↓メインループを呼び出しているだけなので、カテゴリの一覧が出るわけではない 14 if(have_posts()): while(have_posts()):the_post(); ?> 15 <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1> 16 <p><?php the_content('Read more'); ?></p> 17 18<?php endwhile; endif;// ?> 19 // ↑ 不要 20} 21?>

PHP

1<?php 2$cat = get_queried_object_id(); // 現在のカテゴリーのID 3$args = array( 'parent' => $cat ); // 子カテゴリーを取得(孫なし) 4$childs = get_categories( $args ); 5foreach( $childs as $child ) { // 子カテゴリーそれぞれ 6 $cat_id = 'category_' . $child->term_id; // カテゴリー(ターム)を指定 7 $image = get_field( 'title_img', $cat_id ); 8 echo '<img src="' . $image. '">' . "\n"; 9 $txt = get_field( 'title_text', $cat_id ); 10 echo $txt, "\n"; 11 12 $args = array( 13 'posts_per_page' => -1, 14 'cat' => $child->term_id, 15 'post_status' => 'publish', 16 ); 17 $my_query = new WP_Query( $args ); 18 if( $my_query->have_posts() ): while( $my_query->have_posts() ): $my_query->the_post(); ?> 19<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1> 20<p><?php the_content('Read more'); ?></p><?php 21 endwhile; endif; 22} // 未テスト 23?>

【WP_Queryの使い方 | WP TECH (WordPress技術専門 Tips)】
http://www.wp-tech.net/wordpress_tips/2879/

【ちょいちょい忘れる『WP_Query』の使い方 | 予習と復習】
http://notebook.yamamotohiroyuki.com/wordpress/2012/08/15/ちょいちょい忘れる『wp_query』の使い方/

投稿2016/12/11 08:59

kei344

総合スコア69407

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

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

sanasasasa

2016/12/11 09:13

ありがとうございました。 参考サイトまでお教え下さり、感謝しております。 始めたばかりで、ほとんどコピペで対応していたため、難しい内容、 検索にも出てこない内容となりますと、行き詰ることばかりでした。 今後は基礎から勉強します。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問