web-dev-qa-db-ja.com

ヘッダー内の静的ブログページリンクを強調表示する

私は私のヘッダーのためにタブシステムのようなナビゲーションバーを作成しました、そして私は私のニュースボタン以外のすべてをそのページでハイライトさせることができます。ニュースは私のすべてのブログ/ニュース投稿の静的ページです。

それが私のコードかどうかはわからないが、誰かが何かアイデアを持っているなら、どうもありがとう。

<?php
$parent_title = get_the_title($post->post_parent);
?>

            <?php
                $items = wp_get_nav_menu_items("main-nav");
                foreach($items as $item): 
            ?>
            <a <?php  if($item->title == $parent_title){ echo 'class="active '.$parent_title.'"';}else{ echo 'class="'.$item->title.'"';} ?> href="<?php echo $item->url; ?>"><?php echo $item->title; ?></a>
            <?php endforeach; ?>
1
blackbull77

あなたのコメントにつき:

私はメニューのHTMLとCSSを自由にカスタマイズできることを望んだからです。私は生成されたhtmlのように欲しくありませんでした:ulまたはliタグ。それに加えて、私のリンクを自由に設定することができます。 - blackbull77 20時間前

そのすべて wp_nav_menu()からの出力で(もちろん生成された<ul>タグと<li>タグを除いて - )できますが、listを出力するのでこれらのタグはsemanticallyです。 ) - チップベネット19時間前

私がこれにどう対処できるかを教えていただけますか。 - blackbull77 44分前

  1. 次のようにtheme_locationを参照して、wp_nav_menu()でリストを出力してください。

    <?php
    wp_nav_menu( array(
        'theme_location' => 'primary_nav'
    ) );
    ?>
    
  2. .current-menu-item CSSクラスをターゲットに合わせてスタイルします。

  3. デフォルトのフォールバックメニューでは、.current_page_item CSSクラスをターゲットにすることもできます。
  4. 親/祖先メニュー項目をスタイルするには、.current-menu-parent.current-menu-ancestor.current_page_parent、および.current_page_ancestorをターゲットにします。
  5. 独自のカスタムCSSクラスを追加するには、 nav_menu_css_classフィルタ を使用します。
0
Chip Bennett

私は偶然に答えを見つけました、そして私はこれを試してみたいと思うかもしれない人のためにそれを渡します。

これが私のやり方です。

<?php if ( is_page() ) {

        $parent_title = get_the_title($posts_page->post_title);
        echo $parent_title;    

 } else {

    $posts_page_id = get_option( 'page_for_posts');
    $posts_page = get_page( $posts_page_id);
    $posts_page_title = $posts_page->post_title;

    $parent_title = $posts_page_title;
    echo $parent_title; 

 } ?>

 <?php
     $items = wp_get_nav_menu_items("main-nav");
     foreach($items as $item): 
  ?>
        <a <?php  if($item->title == $parent_title){ echo 'class="active '.$item->title.'"';}else{ echo 'class="'.$item->title.'"';} ?> href="<?php echo $item->url; ?>"><?php echo $item->title; ?></a>
 <?php endforeach; ?>

投稿がページの場合は、親ページのタイトルが投稿されます。それ以外の場合は、ブログの静的ページタイトルの名前が表示されます。これが何人かの人々に役立つことを願っています。

DynamicWP記事に感謝します!

0
blackbull77