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

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

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

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

PHP

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

Q&A

解決済

1回答

2520閲覧

Smart Custom Fieldsの「関連する投稿」をグループ内で出力するには?

yukinko

総合スコア13

WordPress

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

PHP

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

0グッド

0クリップ

投稿2020/09/09 08:36

編集2020/09/09 08:47

Smart Custom Fieldsの「関連する投稿」を固定ページで繰り返しグループの中に入れて使いたいのですが、うまくいきません。

<?php $group_h2 = SCF::get('group_h2'); foreach ($group_h2 as $fields ) { ?> <h2><?php echo $fields['h2']; ?></h2> <p><?php echo $fields['h2_body']; ?></p> <?php $cf_group = SCF::get('group_h2'); foreach ($cf_group as $field ) { $check_array = $field['recommend']; foreach ($check_array as $field_array) { echo get_post($field_array)->post_title;//タイトル echo get_permalink($field_array);//URL } } ?> <?php } ?>

上記のコードだと、下記のように、見出しと本文はきちんと繰り返されるのですが、
関連する投稿の部分だけ、選んだページが表示されず、なぜかすべての固定ページがずらっと出てきてしまいます。

<h2>見出し</h2> <p>本文</p> 関連ページ1のタイトル、関連ページ1のURL、関連ページ2のタイトル、関連ページ2のURL、関連ページ3のタイトル、関連ページ3のURL.............. <h2>見出し</h2> <p>本文</p> 関連ページ1のタイトル、関連ページ1のURL、関連ページ2のタイトル、関連ページ2のURL、関連ページ3のタイトル、関連ページ3のURL..............

やりたいのは、下記のように、1グループごとに、1つだけの関連ページを表示させたいのですが、
うまくいきません。

<h2>見出し</h2> <p>本文</p> 関連ページ1のタイトル、関連ページ1のURL <h2>見出し</h2> <p>本文</p> 関連ページ2のタイトル、関連ページ2のURL

見出し、本文、関連する投稿の3つをグループにしないとうまくいくので、
もしかしたら、関連する投稿のリレーションがうまくいっていないようですが、何分、いろいろなサイトからコピペすることしかできないので、限界を感じています。どうやればいいのか、教えていただければと思います。

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

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

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

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

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

CHERRY

2020/09/12 07:57

Smart Custom Fields の定義はどのようになっているのでしょうか?
yukinko

2020/09/12 12:20

Smart Custom Fieldsの設定は下記のようにしています。 これで分かりますでしょうか? ・グループ名=group_h2 ・項目1=h2(テキスト) ・項目2=h2_body(WYSIWYG) ・項目3=recommend(関連する投稿)投稿タイプは、固定ページにチェックを入れています。
guest

回答1

0

ベストアンサー

よく分からんけど、こういう事か。

$check_array = $field['recommend']; if( $check_array === get_the_ID() ) { foreach ($check_array as $field_array) { echo get_post($field_array)->post_title;//タイトル echo get_permalink($field_array);//URL } }

追記

何かよくわからんが、とりあえずこういうことか?

<?php $group_h2 = SCF::get('group_h2'); foreach ( $group_h2 as $fields ) { ?> <h2><?php echo $fields['h2']; ?></h2> <p><?php echo $fields['h2_body']; ?></p> <?php echo get_post( $fields['recommend'] )->post_title;//タイトル echo get_permalink( $fields['recommend'] );//URL } ?>

・グループ名=group_h2
・項目1=h2(テキスト)
・項目2=h2_body(WYSIWYG)
・項目3=recommend(関連する投稿)投稿タイプは、固定ページにチェックを入れています。

こんな設定項目だけ知らされても分からん。
追記したコードで動かんのならプラグインの設定画面のスクショやvar_dump( $group_h2 )の結果を張り付けなさいな。

投稿2020/09/12 00:08

編集2020/09/12 14:20
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yukinko

2020/09/12 05:03 編集

教えていただき、ありがとうございます。さっそく、下記のようにコードに組み込んで記述してみました。結果は、関連ページのところだけ、何も表示されませんでした。 <?php $group_h2 = SCF::get('group_h2'); foreach ($group_h2 as $fields ) { ?> <h2><?php echo $fields['h2']; ?></h2> <p><?php echo $fields['h2_body']; ?></p> <?php $group_h2 = SCF::get('group_h2'); foreach ($group_h2 as $field ) { $check_array = $field['recommend']; if( $check_array === get_the_ID() ) { foreach ($check_array as $field_array) { echo get_post($field_array)->post_title;//タイトル echo get_permalink($field_array);//URL } } } ?> 関連する投稿は、1ページにひとつだけ表示するのが普通(!?)なので、グループにして何度も繰り返し表示させることはできないようになっているのかなと、あきらめの境地になっています....。
退会済みユーザー

退会済みユーザー

2020/09/12 05:09

if( $check_array == get_the_ID() ) { だとどうだろうか?
yukinko

2020/09/12 06:35

ありがとうございます。やってみましたが、結果は同じで、なにも表示されませんでした....。
退会済みユーザー

退会済みユーザー

2020/09/12 06:58

ん? あとから気付いたが違うな… 現在のページのIDと$check_arrayが同じなら、という条件だと現在のページのタイトルとURLが表示されるな。 つーか、同一の配列をループで2重で回してるのは何でだ? とりあえず配列の中身がどうなってるのか分からんから余計に解らん。
yukinko

2020/09/12 12:38 編集

ループが2重になってしまっているのは、単に外し方が分からないからです。恥ずかしながら、サイト検索で見つけたコードなので、組み込み方が分からずそのまま貼り付けております。 あと、配列の中身ですが、それはSmart Custom Fieldsの設定内容ということでしょうか。 それでしたら、下記のような設定にしています。これで分かりますでしょうか。 ・グループ名=group_h2 ・項目1=h2(テキスト) ・項目2=h2_body(WYSIWYG) ・項目3=recommend(関連する投稿)投稿タイプは、固定ページにチェックを入れています。
yukinko

2020/09/13 02:36 編集

なんと!できました! ただ、追記していただいたコードでは、結果は同じで何も表示されなかったので、ご教示いただいたとおり、「var_dump( $group_h2 )の結果」というのを出そうと思って下記のようにやってみました。 -------------------------- <?php $data = "group_h2"; var_dump($data); ?> -------------------------- すると、結果は、 -------------------------- string(8) "group_h2" -------------------------- と出ました。 これがいったい何を意味するのか分からなかったけど、関連する投稿に付けた「recommend」という名前の文字数が9字と長すぎるのかなと思って、試しに「reco」と8字以内の文字数に変更してみました。 そしたら、出力したかった関連する投稿の固定ページが表示されるようになりました! まずは、二重のループを外してもらい、次に「var_dump」をやることを教えてもらえたので大変参考になりました。本当にどうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問