get_permalink() の引数(括弧の中)が $post[0]->ID
なのですよね?
それをもとに類推すると post_custom() の第1引数は $post->ID
ではなく $post[0]->ID
なのかもしれません。get_the_terms() も同様では?
こんばんは。ご回答誠にありがとうございます。
残念ながら、そのように書くとエラーログに「その行がおかしいですよ」と出てしまうようでした。ツイートもされず、です。
get_permalink($post[0]->ID)
なのは間違いありませんが、他のところを同じようにget_terms($post[0]->ID,'fluits')
などと書くとエラーなのです。
その行だけではなく前後も確かめる必要がありますね。直そうとしているコードがテーマのテンプレート(ファイル)に書かれているのでしたら、テーマの入手先とテンプレート名と何行目なのかが分かればもう少しアドバイスもらえるかもしれません。
こんばんは。
失礼いたしました。
どうやらおっしゃる通り、$post[0]->ID
が適切なようです。
ただ、直接出力側に書く《A》ではエラーで、代入する《B》では大丈夫でした。(なぜ??)
さらに、get_post_meta()
が適切だというのもおっしゃるとおりのようです。
色々な方に伺い、最終的に次のようにして、ひとまず解決いたしました。
//ツイートするテキスト_代入
$fruits = get_the_terms($post[0],'fruits');
$fruits_name = '';
$sep = "、";
foreach( $fruits as $fruits_all ) {
if( $fruits_all !== end( $fruits )){
$fruits_name .= $fruits_all->name.$sep;
}else{
$fruits_name .= $fruits_all->name;
}
}
//ツイートするテキスト_出力
$params = array(
'status' => "{$fruits_name}".'\n'.get_permalink($post[0]->ID)
);
↓↓結果↓↓
:::::::ツイート内容:::::::
リンゴ、バナナ
http://example.com/kiji1
:::::::::::::::::::::::::
さて、上のコードでひとまず解決したわけですが、
さいごにget_the_terms()
かget_the_term_list()
のいずれが適切か?
について、お手すきの折に教えていただければ幸いです。
>タームの名前ではなくタームオブジェクトの配列を返すので用途が違う
という点が少しわかりません。(かなり初心者です。)
★どのようなケースで使い分けるものなのでしょうか?
★また、今回のケースについて、どのような理由でget_the_term_list()
が適切だとお考えになったのでしょうか?
このトピックへの返信はこれで最後にします。
以下の話題の続きは、新しくトピックを立てて続けてくださいね。
それから、マルチポストはマナー違反とされているので、ご注意ください。
さいごにget_the_terms()かget_the_term_list()のいずれが適切か?
について、お手すきの折に教えていただければ幸いです。
>タームの名前ではなくタームオブジェクトの配列を返すので用途が違う
という点が少しわかりません。(かなり初心者です。)
@koromochi さんはトピックの最初で次のように書きましたよね。
PHPで以下を出力したいです。
中略
(2)カスタムタクソノミー「fruits」のターム
(例)リンゴ、バナナ
「タームを出力したい」の例がリンゴやバナナでしたから
タームの名前を出力したいのだと判断しました。
とりあえず「オブジェクトという言葉が何を指しているか」は後回しにして
get_the_terms() はタームのオブジェクト(名前と同じものではありません)を返す関数
get_the_term_list() はタームのHTML文字列を返す関数
です。
この「何々を返す関数です」という説明は WordPress の日本語Codexの説明ページに書かれています。
(それぞれの関数の説明の冒頭に書かれているので、今のところはそこだけを眺めておけば良いと思います。)
話が回りくどくなりましたが
タームの名前というのは文字列ですよね。
get_the_term_list() はタームのHTML文字列を返すので、役に立つかもしれないなと思ったわけです。
ところで「オブジェクト」というのは、複数の違う種類のデータをひとまとめにしたもの、くらいに初心者のうちは思っておいて良いんじゃないでしょうか。
例えば「@koromochi さん」というオブジェクトが仮にあるとします。
するとオブジェクトの中には、名前、身長、体重などの(違う種類の)データがあるはずですよね。
(もっと違う種類のデータ、例えば住所とか職業とかがあっても良いし、なくても良い。)
これをタームに当てはめると、タームのオブジェクトの中には、タームの名前、ID番号、そのタームの親タームのID番号などが入っている、みたいな。
この話を、「上のコードでひとまず解決したわけですが」のコードに当てはめると、こうなります。
$fruits → タームのオブジェクトの配列
$fruits_all → タームのオブジェクトひとつ
$fruits_all->name → タームのオブジェクトひとつに含まれている name というデータ