wordpress导航栏写死判断

风中赏雪 Wordpress Wordpress 2025-09-28 3,797 0
   <ul class="nav-list">
    <?php
    // 调试信息(测试完成后可以删除)
    echo '<!-- 调试信息: ';
    echo '当前路径: ' . $_SERVER['REQUEST_URI'] . ' | ';
    echo '是否首页: ' . (is_home() ? '是' : '否') . ' | ';
    echo '是否文章: ' . (is_single() ? '是' : '否');
    if (is_single()) {
        $categories = get_the_category();
        echo ' | 分类: ';
        foreach ($categories as $cat) {
            echo $cat->slug . '(' . $cat->name . ') ';
        }
    }
    echo ' -->';
    
    // 基础判断
    $current_path = $_SERVER['REQUEST_URI'];
    $is_home = $current_path == '/' || is_home() || is_front_page();
    
    // 获取当前文章的主分类
    $main_category = '';
    if (is_single()) {
        $categories = get_the_category();
        if (!empty($categories)) {
            $main_category = $categories[0]->slug;
        }
    }
    
    // 最终判断 - 修正变量名
    $is_qiche = strpos($current_path, '/category/qiche') !== false || $main_category == 'qiche';
    $is_huoche = strpos($current_path, '/category/huoche') !== false || $main_category == 'huoche';
    ?>
    
    <li <?php echo $is_home ? 'class="current"' : ''; ?>>
        <a href="/" <?php echo $is_home ? 'aria-current="page"' : ''; ?>>首页</a>
    </li>
    
    <li <?php echo $is_qiche ? 'class="current"' : ''; ?>>
        <a href="/category/qiche/" <?php echo $is_qiche ? 'aria-current="page"' : ''; ?>>汽车</a>
    </li>
    
    <li <?php echo $is_huoche ? 'class="current"' : ''; ?>>
        <a href="/category/huoche/" <?php echo $is_huoche ? 'aria-current="page"' : ''; ?>>火车</a>
    </li>
</ul>
  • li的css样式:class=”current”
  • a的css样式:aria-current=”page”

我更喜欢下面的这段代码:


<ul class="nav-list">
    <li <?php echo is_front_page() || is_home() ? 'class="current"' : ''; ?>>
        <a href="/" <?php echo is_front_page() || is_home() ? 'aria-current="page"' : ''; ?>>首页</a>
    </li>
    
    <li <?php echo is_category('qiche') || (is_single() && has_category('qiche')) ? 'class="current"' : ''; ?>>
        <a href="/category/qiche/" <?php echo is_category('qiche') || (is_single() && has_category('qiche')) ? 'aria-current="page"' : ''; ?>>汽车</a>
    </li>
    
    <li <?php echo is_category('huoche') || (is_single() && has_category('huoche')) ? 'class="current"' : ''; ?>>
        <a href="/category/huoche/" <?php echo is_category('huoche') || (is_single() && has_category('huoche')) ? 'aria-current="page"' : ''; ?>>火车</a>
    </li>
    
    <li <?php echo is_page('contact') ? 'class="current"' : ''; ?>>
        <a href="<?php echo get_permalink(get_page_by_path('contact')); ?>" <?php echo is_page('contact') ? 'aria-current="page"' : ''; ?>>联系我们</a>
    </li>
</ul>

说明:


is_page('contact') - 判断当前页面是否是slug为'contact'的页面

get_page_by_path('contact') - 通过slug获取页面对象

get_permalink() - 获取页面的完整URL

如果您使用的是页面ID或标题,也可以这样写:


<!-- 使用页面ID -->
<li <?php echo is_page(123) ? 'class="current"' : ''; ?>>
    <a href="<?php echo get_permalink(123); ?>" <?php echo is_page(123) ? 'aria-current="page"' : ''; ?>>联系我们</a>
</li>

<!-- 使用页面标题 -->
<li <?php echo is_page('联系我们') ? 'class="current"' : ''; ?>>
    <a href="<?php echo get_permalink(get_page_by_title('联系我们')); ?>" <?php echo is_page('联系我们') ? 'aria-current="page"' : ''; ?>>联系我们</a>
</li>

小提示: 如果您的”联系我们”页面slug不是’contact’,请将代码中的’contact’替换为实际的slug值。您可以在WordPress后台的页面编辑器中查看页面的slug。