私は今週からいくつかの問題を抱えています。私はそれで悪い時間を過ごしています!
私は自分の状況を説明します:
投稿カテゴリのスタイルを設定しました。
(背景色と小さな画像の背景).
例えば。
親A - 子供1 - 子供2 - 子供3
親B - 子供1 - 子供2
親C - 子供1 - 子供2
私が使っているループは:
<a href="#" class="<?php $category = get_category($cat);
echo $category->category_nicename;?>"><?php single_cat_title('') ?></a>
私がparent_categoryページにいるとき、これはうまく働きます、それは私がクラスとしてcategory_slugを使って、私がcssによってセットアップしたスタイルを持ってきます。
(例えばカテゴリのCSSの場合:)
article.category-business-and-finance .meta-category2 a.business-and-finance {
color: white;
float: left;
padding: 2px;
padding-left: 25px;
background: url(myimg) no-repeat left ;
background-size: 15px 15px;
background-color: #c3bc19 ;
background-position-x: 5px;
padding-right: 5px;
}
ただし、child_categoryのcategory_pageに移動すると、別のカテゴリのスタイルが表示されます。いくつかの投稿が同時にmultipel parent_categoryと複数のchld-categoryに設定されているように。たくさんのサブカテゴリーが将来追加されるので、それぞれのchild_categoryに対してCSSを作成したくはありません。
私が達成したいのは、それが現在のparent_categoryスラッグのクラスを持ってくるために、child_categoryのためです。
これはどのようにして達成できますか?
私は代わりにこのループを試してみました:
<a href="#" class="<?php $parentscategory ="";
foreach((get_the_category()) as $category) {
if ($category->category_parent == 0) {
$parentscategory .= ' ' . $category->slug . ' ';
}
}
echo substr($parentscategory,0,-2);?>"><?php single_cat_title('') ?></a>
これにより、投稿に添付されているすべてのparent_categoryからのクラスが追加されます。 ..現在のものだけにする方法はありますか?
(例:親Aからの子-1のカテゴリページのim、ただし、投稿は親Bおよび親Cにもアタッチされています。これにより、親ABおよびCのクラスと現時点でのクラスを追加します親Aのみの場合 - 親Aページの子カテゴリのimとして).
どうすればこれを作ることができますか? current_parent_categoryを試すべきですか? cat_ancestor?
いつもありがとうございます。
あなたは get_ancestors()
を使うことができます。これを変換することができます:
<a href="#" class="<?php $category = get_category($cat);
echo $category->category_nicename;?>"><?php single_cat_title('') ?></a>
これには(私はあなたがあなたの質問でそれを示していなかったので私は$cat
が何であるかわかりません、私はそれがカテゴリーIDであると思います、そうでなければ、カテゴリーIDを提供しなければなりません):
<?php
$cat_ancestors = get_ancestors( $cat, 'category' );
$top_parent = get_category( end( $cat_ancestors ) );
?>
<a href="#" class="<?php esc_attr_e( $top_parent->slug );?>"><?php echo $top_parent->name; ?></a>
カテゴリがすでに最上位の親カテゴリである場合にもコードを機能させるには、get_ancestors
によって返される値を確認する必要があります。例えば:
<?php
$cat_ancestors = get_ancestors( $cat, 'category' );
if( !empty($cat_ancestors) ) {
$cat = get_category( end( $cat_ancestors ) );
} else {
$cat = get_category( $cat );
}
?>
<a href="#" class="<?php esc_attr_e( $cat->slug );?>"><?php echo $cat->name; ?></a>