カスタム投稿のアーカイブページでタームのスラッグ名をclass名にいれたい - PHPプロ!Q&A掲示板

4962

  • 0P

カスタム投稿のアーカイブページでタームのスラッグ名をclass名にいれたい

質問日時 / 2018年7月12日 15:43    回答数 / 3件

Questioner:  gangarujoma  このエントリーをはてなブックマークに追加 

キーワード / ターム    スラッグ名取得    class名   

カスタム投稿のアーカイブページを2種設けています。
別のカスタム投稿というだけで、2種とも表示形式は同じにしてあります。

ともにターム名をそれぞれいくつか設けており、ページ上部にターム名が並び、
ターム名をクリックすると、該当する記事のアーカイブのみ表示されるようにしてあり、
下記のように、他のclass名と一緒に出力したいと思っています。
※『』内にタームのスラッグ名。複数ある場合は複数取得
  1. <div class="grid-item percent-33 『』" >
1種は下記の通り記載したところ問題なく実装することができました。
  1. <?php
  2.     $nicename = [];
  3.     foreach (get_the_category() as $cat) { $nicename[] = $cat->category_nicename}
  4.      printf('<div class="grid-item percent-33 %s" >'implode(' '$nicename))?>
しかし、もう1種のカスタム投稿の方は、スラッグ名の部分が
「%e6%9c%aa%e5%88%86%e9%a1%9e」のように表示されてしまい、
そのままでは上手く実装することができません。

アーカイブでそれぞれのターム名も表示するようにしていたのですが、
こちらも上手くいかなかったので、
  1. <?php the_category('')?>
と記載していた部分を
  1. <?php the_terms( $post->ID'category_design' )?>
こちらに書き換えてみたところ、実装させることができたので、
class名の方もtermで記載すれば表示されるかと思い、
  1. <?php
  2. $slug = [];
  3. foreach (get_the_terms() as $term) { $slug[] = $term->slug}
  4. printf('<div class="grid-item percent-33 %s" >'implode(' '$slug));?>
上記のように記載しましたが、記事自体全く読み込んでくれなくなってしまいました。

こちらを実装するようにするには、どのように記述したらよろしいでしょうか。
ご確認のほど、どうぞよろしくお願いいたします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimixこちら ↓ の関連でしょうか? https://detail.chie
 ┗A01-1gangarujomaわわわ!なんと! ご面倒をおかけしてすみません。あ
  ┗A01-1-1gangarujomaこんにちは。昨日shimix様に助言いただいたことを試し

回答一覧

並び替え:

A01 満足
answerershimix [7月15日 06:20]

こちら ↓ の関連でしょうか?

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10192915655


><?php the_terms( $post->ID, 'category_design' ); ?>
>こちらに書き換えてみたところ、実装させることができたので、

新情報ですね(汗


get_the_terms()の第一引数、第二引数を同様に指定したらどうなりますか?get_the_category()は第一引数を省略すると$postー>IDですが、get_the_terms()は省略すると 0 になるようなので・・・

https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_the_category
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_the_terms

この意見に回答する

ツリーへ TOPへ

A01-1
replyergangarujoma [7月16日 01:41]

わわわ!なんと!
ご面倒をおかけしてすみません。あれから色々試してはみたのですが、一向に実行することができず、困り果て、こちらのサイトを見つけ質問させていただいた次第です。
まさか同じ方に別サイトで助言いただけるとは感激です!ありがとうございます。

>> <?php the_terms( $post->ID, 'category_design' ); ?>
>> こちらに書き換えてみたところ、実装させることができたので、

> 新情報ですね(汗

すみません。こちらの部分ですが、実装させたい部分とは同じページなのですが、
class名ではなく、カテゴリー名を表示させている部分で、
アチラのコメントに書いた
「他にも同様にカテゴリを呼び出していた部分がありまして、
別ページで同じようにカテゴリに対して記述をしたところ、
うまくいかず、termで記述してみたら表示されたため、
この部分もtermで表示ができるだろうと
タカをくくっていたのですが、駄目だったようでした。」
この部分を具体的に書いたものが、
  1. <?php the_terms( $post->ID'category_design' )?>
この部分で、この記述にしたら「ターム名を表示させたい」という方は実装できたというお話です。class名の方とは別だったので、アチラではこの説明を簡単に文章で書いてしまいました。こちらもclass名の方を実装させる上で必要な材料でしたか。すみません。

shimix様がおっしゃるように、get_the_terms()の第一引数、第二引数を同様に指定するというのをやってみました。
  1. <?php
  2.   $slug = [];
  3.   foreach (get_the_terms($post->ID'category_design') as $term) { $slug[] = $term->slug}
  4.   printf('<div class="grid-item percent-33 %s" >'implode(' '$slug));?>
こちらで記述してみたところ、動き出しました!ありがとうございます!
が、サムネイル画像だけレイアウトがおかしくなってしまいました。

明日になってしまいますが、また改めてその部分を確認してみて、
無事問題なく実装できたらご連絡させていただきます。

色々ご面倒おかけしてしまいすみませんでした。
大変助かります。ありがとうございます。

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyergangarujoma [7月16日 11:20]

こんにちは。昨日shimix様に助言いただいたことを試したところ、サムネイル画像が大きさが変わってしまい調査したところ、このターム名のスラッグが「logo」というのがあり、headerにあるロゴに指定されたclass名と被ってしまっていたために、おかしくなったものでした。

スラッグ名を変更し、問題なく実装されました!!
度重なる質問にお答えいただき大変感謝しております。
本当にありがとうございます。

また・・何かあれば・・よろしくお願いします・・。すみません。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)

Q&A掲示板 新着情報