0

これは、wordpress で作成したすべてのカスタム投稿を一覧表示するサブメニューを作成するために使用するコードです。

    <ul class="submenu">
        <img src="<?php bloginfo('template_directory'); ?>/images/submenu.png" alt="submenu" width="62" height="1" />
        <!-- List post types -->
        <?php
            $the_query = new WP_Query( 'post_type=artworks_post' );
            // The Loop
            while ( $the_query->have_posts() ) : $the_query->the_post();
            echo '<li id="submenu_link" class="submenu_item_link">';
            echo '<a  href="' .get_permalink(). '" > ';
            the_title();
            echo '</a>';
            echo '</li>';
            endwhile;
            // Reset Post Data
            wp_reset_postdata();
        ?> 
        <img src="<?php bloginfo('template_directory'); ?>/images/submenu.png" alt="submenu" width="62" height="1" />
    </ul>

たとえば、私の現在の投稿は artworks_post/project-coke ですが、サブメニューのタイトル (Project Coke タイトル) に現在/アクティブなクラスを追加していません。

サブメニューの現在の投稿のタイトルにアクティブ/現在のクラスを追加するにはどうすればよいですか?

サブメニューは、カスタム投稿を取得するように構築されています...

4

3 に答える 3

1

私のコードを試してみてください。:

このコードをfunctions.phpに入れます

function if_current($s) {
    global $wp_query,$post;
    $current    = $wp_query->get_queried_object_id();
    $post_id    = $post->ID;
    if($current==$post_id){echo $s;}
}

コードを次のように編集します。

<ul class="submenu">
    <img src="<?php bloginfo('template_directory'); ?>/images/submenu.png" alt="submenu" width="62" height="1" />
    <!-- List post types -->
    <?php
        $the_query = new WP_Query( 'post_type=artworks_post' );
        // The Loop
        while ( $the_query->have_posts() ) : $the_query->the_post();
        echo '<li id="submenu_link" class="submenu_item_link ';
        if_current('current');
        echo '">';
        echo '<a  href="' .get_permalink(). '" > ';
        the_title();
        echo '</a>';
        echo '</li>';
        endwhile;
        // Reset Post Data
        wp_reset_postdata();
    ?> 
    <img src="<?php bloginfo('template_directory'); ?>/images/submenu.png" alt="submenu" width="62" height="1" />
</ul>

結果 :

<li id="submenu_link" class="submenu_item_link current">
<a href="http://webkunst.comeze.com/test/artworks_post/project-coke/"> Project Coke</a>
</li>

if_current('text')PS:テーマのループに何でも追加できます。これはいつ表示されます$post->ID == $wp_query->get_queried_object_id()か(現在の場合)

したがって、CSS でclass currentを使用できます

于 2012-10-24T12:08:57.593 に答える
0

WordPress Menu の実装を使用することをお勧めします。(情報はこちらこちら

これは、WordPress でメニューを作成するための「あるべき姿」の優れた簡単なアプローチです。たとえば、wp_nav_menu 関数を使用すると、アクティブなアイテムが自動的にマークされます。

あなたのアプローチに固執することを余儀なくされていると感じた場合は、現在表示されている投稿が、ループ内に表示している投稿の 1 つと等しいかどうかを確認し、current または active などのクラスをエコーする必要があります。

于 2012-10-24T12:04:27.513 に答える
0

現在どのページ (またはカテゴリ) にいるかを確認し、アクティブなサブメニュー項目にクラスを追加する必要があります。get_the_ID()WP ループで現在の要素の ID を取得するために使用できます。

したがって、この行の前に:

echo '<li id="submenu_link" class="submenu_item_link">';

現在の投稿 ID が投稿 ID と一致するかどうかのチェックを追加し、liそれを示す要素にクラスを追加する必要があります。

于 2012-10-24T12:01:18.517 に答える