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,但它没有在子菜单(项目可乐标题)中将当前/活动类添加到它的标题。

如何在子菜单中将活动/当前类添加到当前帖子的标题?

子菜单以这种方式构建以获取自定义帖子...

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>

PS:您可以在主题if_current('text')循环添加任何内容,这将显示何时$post->ID == $wp_query->get_queried_object_id()(如果当前)

所以你可以在你的 CSS中使用当前类

于 2012-10-24T12:08:57.593 回答
0

您需要检查您当前所在的页面(或类别),并将其他类添加到活动的子菜单项。您可以使用get_the_ID()在 WP 循环中检索当前元素的 ID。

所以在这一行之前:

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

您需要检查当前帖子 ID 是否与帖子 ID 匹配,并向li将显示该内容的元素添加一个类。

于 2012-10-24T12:01:18.517 回答
0

我建议您使用 WordPress 菜单实现。(这里这里的信息

这是在 WordPress 中创建菜单的一种很好且简单的“应该如何”的方法,例如,一旦您使用了 wp_nav_menu 功能,它就会自动标记活动项目。

如果你觉得被迫坚持你的方法,你必须检查当前显示的帖子是否等于你在循环中显示的帖子之一,并回显类,如当前或活动。

于 2012-10-24T12:04:27.513 回答