web-dev-qa-db-ja.com

カスタム投稿タイプのクラスとしてのカテゴリ

私はpost_classを介して、カスタム投稿タイプがループ内のクラスとしてカテゴリを出力しないように思われることに気付いただけです。これは投稿タイプを設定するときに宣言する必要があるものですか。それともpost_classの拡張ですか?

たとえば、タイプがpostの投稿では、クラスはclass="post-50434 post type-post status-publish format-standard hentry category-my-lovely-category tag-some-ace-tag"のように出力しますが、私のカスタム投稿タイプではカテゴリは表示されません。

- 編集 -

これは私がやろうとしていることを明確にするのに役立つかもしれない私のコードの一部です。

<?php $cat = get_the_category();
$parentCatName = get_cat_name($cat[0]->parent); ?>

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?> data-category="<?php echo $parentCatName; ?>" data-title="<?php the_title(); ?>">
[...]
</article>

私が抱えている問題は、デフォルトの投稿タイプの場合と同じ方法でカスタム投稿タイプのカテゴリ情報を取得することです。

- 編集 -

すみません、おそらく私が達成しようとしていることのちょっとした背景が助けになるでしょう - 私はそれを簡潔にしておくつもりです:

  • 同位体の石積みのレイアウトを使用しています

  • ループ中に各投稿に追加された 'data-category'属性によって結果をフィルタリングしたい

  • いくつかの投稿タイプ(投稿、商品、コース)の私のカテゴリは、共通の親カテゴリの下にまとめられています。

  • 私のループでは、そのため、その「データカテゴリ」フィールドに親カテゴリを追加したいと思います。

私の問題は、get_the_categoryを使用して、デフォルトのカスタム投稿タイプに対してカテゴリを取得し、さらに親カテゴリを取得することしかできないために発生します。

これが理にかなっていることを願っています。

4
Kevin Nugent

これは予想される(または少なくとも設計された)動作です。

これはその上のコーデックスの一部です:

post_class CSSクラスは、投稿ページビュー のコンディショナルタグ に基づいて次のように表示されます。

カテゴリ
投稿を表示するカテゴリテンプレートファイルおよびページビューには、クラスセレクタがあります。post post-idカテゴリIDカテゴリ名

もちろん、カスタムフィルタ関数を post_class フィルタにフックすることもできます。

// EDIT
更新された質問によると、更新されたコードは次のとおりです。

<?php
$cat = wp_get_post_terms(get_the_ID(), 'category');
$parentCatName = get_cat_name($cat[0]->parent);
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?> data-category="<?php echo $parentCatName; ?>" data-title="<?php the_title(); ?>">
[...]
</article>

投稿クラスも追加したい場合は、次のようにします。

post_class('category-'.$parentCatName);
2
tfrommen