【问题标题】:WordPress: Custom footer links doesn't show active stateWordPress:自定义页脚链接不显示活动状态
【发布时间】:2010-07-25 18:31:39
【问题描述】:

因为我使用了几种自定义帖子类型和两种语言,我决定不使用 WP 自己的菜单功能,而是使用这些条件语句 -

<div class="navigation">
<ul>
    <li><a <?php if(is_page('home') || is_page('hem')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo(url) . '">Home'; } else { echo 'href="' . get_bloginfo(url) . '">Hem'; } ?></a></li>
    <li><a <?php if(is_page('offers') || is_page('erbjudanden') || in_category('offers') || in_category('erbjudanden')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo('url') . 'offers">Offers'; } else { echo 'href="' . get_bloginfo('url') . '/erbjudanden">Erbjudanden'; } ?></a></li>
    <li><a <?php if(is_page('properties-spain') || is_page('fastigheter-spanien')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo('url') . 'properties-spain">Properties in Spain'; } else { echo 'href="' . get_bloginfo('url') . '/fastigheter-spanien">Fastigheter i Spanien'; } ?></a></li>
    <li><a <?php if(is_page('properties-usa') || is_page('fastigheter-usa')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo('url') . 'properties-usa">Properties in USA'; } else { echo 'href="' . get_bloginfo('url') . '/fastigheter-usa">Fastigheter i USA'; } ?></a></li>
    <li><a <?php if(is_subpage('information') || is_subpage('radgivning')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo('url') . 'information/process-of-purchase">Information'; } else { echo 'href="' . get_bloginfo('url') . '/radgivning/hur-ett-kop-gar-till">Rådgivning'; } ?></a></li>
    <li><a <?php if(is_page('about-us') || is_page('om-oss')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo('url') . 'about-us">About us'; } else { echo 'href="' . get_bloginfo('url') . '/om-oss">Om oss'; } ?></a></li>
    <li class="last"><a <?php if(is_page('contact') || is_page('kontakt')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo('url') . 'contact">Contact'; } else { echo 'href="' . get_bloginfo('url') . '/kontakt">Kontakt'; } ?></a></li>
</ul>
</div>

现在这很好用,包括在头文件中,但在页脚文件中,只有一些链接在实际页面上时被赋予一个活动类。菜单中的所有项目都以页面形式存在,每种语言(瑞典语和英语)都有一个版本。这个错误看起来很奇怪,我尝试使用不同的条件参数进行检查,例如页面标题、页面 ID 等,但没有结果。有什么想法吗?

【问题讨论】:

    标签: wordpress menu


    【解决方案1】:

    有时模板源中较高的查询会破坏较低的条件标记的输出(即在您的页脚中)。诀窍是在页脚中使用 wp_reset_query() 之前,包括:

        <?php wp_reset_query(); ?>
        <div class="navigation">
        <ul>
            <li><a <?php if(is_page('home') || is_page('hem')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo(url) . '">Home'; } else { echo 'href="' . get_bloginfo(url) . '">Hem'; } ?></a></li>
            <li><a <?php if(is_page('offers') || is_page('erbjudanden') || in_category('offers') || in_category('erbjudanden')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo('url') . 'offers">Offers'; } else { echo 'href="' . get_bloginfo('url') . '/erbjudanden">Erbjudanden'; } ?></a></li>
            <li><a <?php if(is_page('properties-spain') || is_page('fastigheter-spanien')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo('url') . 'properties-spain">Properties in Spain'; } else { echo 'href="' . get_bloginfo('url') . '/fastigheter-spanien">Fastigheter i Spanien'; } ?></a></li>
            <li><a <?php if(is_page('properties-usa') || is_page('fastigheter-usa')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo('url') . 'properties-usa">Properties in USA'; } else { echo 'href="' . get_bloginfo('url') . '/fastigheter-usa">Fastigheter i USA'; } ?></a></li>
            <li><a <?php if(is_subpage('information') || is_subpage('radgivning')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo('url') . 'information/process-of-purchase">Information'; } else { echo 'href="' . get_bloginfo('url') . '/radgivning/hur-ett-kop-gar-till">Rådgivning'; } ?></a></li>
            <li><a <?php if(is_page('about-us') || is_page('om-oss')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo('url') . 'about-us">About us'; } else { echo 'href="' . get_bloginfo('url') . '/om-oss">Om oss'; } ?></a></li>
            <li class="last"><a <?php if(is_page('contact') || is_page('kontakt')) { echo 'class="active" '; } if (ICL_LANGUAGE_CODE == 'en') { echo 'href="' . get_bloginfo('url') . 'contact">Contact'; } else { echo 'href="' . get_bloginfo('url') . '/kontakt">Kontakt'; } ?></a></li>
        </ul>
        </div>
    

    【讨论】:

    • 我明白了。我尝试使用 wp_reset_query() 但它没有效果。这可能与我在整个页面中使用 wp_query 而不是核心循环这一事实有关吗?也许 wp_query 有另一个重置电话?
    • 有趣,这个功能一直对我有用。也许如果你使用 PHP5,你可以在你的 header 中克隆你的 $wp_query 对象,然后在你的页脚从克隆中恢复它之前,这将使一切恢复到原来的状态:wprecipes.com/wordpress-tip-storing-wp_query-for-future-use
    • 抱歉,直到现在才看到您的回复。我不确定恢复 wp_query_object 是什么意思,因为我没有为实际菜单项创建查询。页面上的查询仅在获取帖子/页面内容时使用。
    • 我尝试从 WP 的核心功能创建一个菜单,但它仍然没有显示活动链接!现在我很困惑。虽然其中一些显示,每个人都显示在标题中,但其中三个没有获得活动状态:properties-spain、properties-usa 和 about-us。
    • 您可能想要尝试克隆和恢复 $wp_query 对象的原因是因为您主题中的其他查询(或幕后的 WordPress 函数调用)可能会改变您的 $wp_query 对象的状态并导致is_page() 等条件函数停止工作。如果您仍然无法使其正常工作,并且它始终适用于您的页眉菜单,那么如果您将菜单的输出捕获到一个变量中,然后在页眉和页脚中回显相同的变量。
    猜你喜欢
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多