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

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

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

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

PHP

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

Q&A

解決済

1回答

1192閲覧

「ターム」が3つ表示されてしまう?

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/03/16 19:13

編集2018/03/17 13:57

###■やりたいこと
「ターム」や「カスタムフィールドの値」を、【1つだけ表示】したいです。

(例)
ターム「neko」について当該記事が「タマ、ミケ、クロ」と登録してあったとき、

➀【登録順で1つだけ表示】
➡タマを表示

➁【ランダムで1つだけ表示】
➡タマかミケかクロを表示

➂【五十音順で1つだけ表示】
➡クロを表示

という感じです。が、現状では次にように3つ表示されてしまうのです。

###■やってみたこと
➀【登録順で1つだけ表示】
➡タマタマタマと3つ連続で表示されてしまいます。

php

1<?php 2$terms = get_the_terms($post->ID,'neko'); 3foreach ( $terms as $term ) { 4echo esc_html($terms[0]->name); 5} 6?>

➁【ランダムで1つだけ表示】
➡タマミケミケやミケクロミケなど、ランダムだけどやっぱり3つ連続で表示されてしまいます。

php

1<?php 2$terms = get_the_terms($post->ID,'neko'); 3foreach ( $terms as $term ) { 4$randkey_1 = array_rand( $terms, 1 ); 5echo esc_html($terms[$randkey_1]->name); 6} 7?>

➂【五十音順で1つだけ表示】
➡さっぱりわかりません。。

上のような状況です。
➀➁の間違いをご指摘いただければ幸いです。
➂は難しそうなのでなくて大丈夫です。
どうぞよろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

$terms = get_the_terms($post->ID,'neko');

$terms というのは配列ですんで、

echo esc_html($terms[0]->name); 最初の要素
echo esc_html($terms[1]->name); 2番めの要素

となります

➁【該当するものの五十音順で最初のを1つだけ】

「PHP ソート」でぐぐると、いろいろソート関数(並べ替え)の解説が引っかかるようです
この配列をソート関数により50音順で並び替える、という操作をし、先頭の要素を読めばお望みのものが得られます

➂【ランダムで1つだけ】

ランダム、というのは、乱数で実現できます
配列の何番目を読む、というのを乱数で決めればいいです

投稿2018/03/17 05:05

y_waiwai

総合スコア87719

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

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

退会済みユーザー

退会済みユーザー

2018/03/17 13:31 編集

ありがとうございます。次のように書いてみました。 <?php $terms = get_the_terms($post->ID,'neko'); foreach ( $terms as $term ) { echo esc_html($terms[0]->name); } ?> と書くと、その投稿の「neko」のタームの1番目が、3つ表示されてしまいました。。 「タマタマタマ」という感じです。 きっと正しい書き方なのでしょうけれど、なのに3つ表示されてしまうということは、どのような原因が考えられますでしょうか?
y_waiwai

2018/03/17 14:57

<?php $terms = get_the_terms($post->ID,'neko'); echo esc_html($terms[0]->name); ?> こうしてみてくいださい foreach というのはループ命令です。 配列の数だけ繰り返す、という処理になります
退会済みユーザー

退会済みユーザー

2018/03/17 22:46

そういう意味だったのですね。3つあったら3つ出てしまうと。助かりました。どうもありがとうございます!!
退会済みユーザー

退会済みユーザー

2018/03/19 14:04

夜分すみません。[0]が効かないやつが現れまして、再度質問させてくださいませ。 カスタムフィールド「cf_img」の値を、echoする際にsrcをくっつけて、画像として出力しています。 <?php $cf_group = SCF::get('cf_img_group'); foreach ($cf_group as $field_name => $field_value ) { echo '<div class="img_slide"><img src="http://example.com/wp-content/themes/theme-child/images/'.$field_value['cf_img'].'.jpg"></div>'; } ?> このうち1つだけを出力したい場合、こちらの質問で教えていただいたように[0]を加えて次のようにしてもできないようです。 <?php $cf_group = SCF::get('cf_img_group'); foreach ($cf_group as $field_name => $field_value ) { echo '<div class="img_slide"><img src="http://example.com/wp-content/themes/theme-child/images/'.$field_value[0]['cf_img'].'.jpg"></div>'; } ?> そこでy_waiwaiさんに再度質問なのですが、このような場合について何か手立てをご存じありませんでしょうか?(>_<)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問