• 解決済 chatm

    (@chatm)


    wordpress5.8.1にサイドバーとしてウィジェットを設定しています。
    ブロックから「カテゴリー」を選んでウィジェットに設定していますが、
    親カテゴリーに属するシングルページが表示された時に、
    親カテゴリーをカレント表示させたいのですが、
    シングルページのカレント表示がなかなかうまくいきません。

    シングルページ以外はjsでカレント表示させ、表示ページではアクティブ表示になります。
    シングルページが属するカテゴリーだけをアクティブにする方法がありますでしょうか。

    js

    // サイドメニュー css「.current」がアクティブ設定
    
    $(function(){
    	$(".side .category li a").each(function(){
    		if(this.href == location.href) {
    			$(this).parents("li").addClass("current");
    		}
    	});
    });

    sidebar.php にウィジェット記述をつくり、シングルページに<?php get_sidebar(); ?>で表示させています。

    <aside class="side">
    
    <?php dynamic_sidebar('sidebar-1'); //サイドバー1 ?>
    
    </aside><!-- /side -->

    css

    .side .category li.current > a {background-color: #EEE;}
    .side .category li.current > a:after { border-top: 1px solid #EC1A0F; border-right: 1px solid #EC1A0F;} 
7件の返信を表示中 - 1 - 7件目 (全7件中)
  • こんにちは

    category_css_class フィルターフックを使用するのはどうでしょうか。

    例:

    add_filter( 'category_css_class', function( $css_classes, $category, $depth, $args ) {
    	if ( 0 === $category->category_parent && ! empty( $cats = wp_get_post_categories( get_the_ID() ) ) ) {
    		if ( in_array( $category->cat_ID, $cats ) ) {
    			$css_classes[] = 'current';
    		}
    	}
    	return $css_classes;
    }, 10, 4 );
    トピック投稿者 chatm

    (@chatm)

    いつもありがとうございます。function.phpに入れてみましたが変わらずです。
    (ifの行のemptyはエラーが出てたので削除してしまいましたが)
    そもそも新しくなったwpのウィジェットがなんだかポンコツな感じもしますし、もう、アクティブ表示はなしにしようかしら、と思い始めています。
    いつも丁寧なご対応をありがとうございます。

    検証してみたましたが、エラーにはなりませんでした。どのようなエラーが表示されているでしょうか?

    では、別のフックでもう一例。

    add_filter( 'render_block', function( $content, $block ) {
    	if ( 'core/categories' === $block['blockName'] ) {
    		foreach( (array) wp_get_post_categories( get_the_ID() ) as $cat_id ) {
    			$cat = get_category( $cat_id );
    			if ( 0 === $cat->category_parent ) {
    				$content = str_replace( "cat-item-{$cat->cat_ID}", "cat-item-{$cat->cat_ID} current", $content );
    			}
    		}
    	}
    	return $content;
    }, 10, 2 );
    トピック投稿者 chatm

    (@chatm)

    ありがとうございます!できましたが、
    申し訳ございません、シングルページが子カテゴリーに属するページでして、
    現在は、シングルページで一番上の親がカレント表示されてしまいます。
    その下の子カテゴリー(複数ある)をカレント表示させることはできますでしょうか。
    何度も度々すみませんです・・・

    親カテゴリーに属するシングルページが表示された時に、
    親カテゴリーをカレント表示させたいのですが、

    その下の子カテゴリー(複数ある)をカレント表示させることはできますでしょうか。

    親子関係なくすべてのカテゴリーということでしょうか?
    その場合は、親カテゴリーのみの条件(下記)を削除すればできると思うのですが…
    0 === $cat->category_parent

    トピック投稿者 chatm

    (@chatm)

    できました!
    すみません!子カテゴリーをカレント表示させたかったので、
    if ( $cat->parent ) {
    にしたら思い通りの表示になりました。
    度々教えて頂きましてありがとうございました!

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「シングルページをカレント表示したい」には新たに返信することはできません。