浏览档案时将博客档案设置为活动

时间:2016-04-14 作者:powerbuoy

我的主菜单中有一个指向我的博客档案的链接。当用户单击它并显示博客时(在/blog/-我有一个静态首页),链接会收到“当前”类(或任何名称)。当用户单击博客帖子时,菜单中的博客链接仍然具有“当前”类(或当前页面父类或类似类)。

这一切都很好<然而,当用户单击其中一个博客时categories 博客链接不再具有“当前”类(或任何父类-即无法将其样式设置为所选)。

这不仅适用于普通博客归档,也适用于任何具有自定义分类法的自定义帖子类型归档。

我希望博客链接仍然有活动类。甚至在浏览博客类别、标签甚至日期时。

有什么非黑客的方法可以解决这个问题吗?

1 个回复
最合适的回答,由SO网友:powerbuoy 整理而成

好吧,这就是我最终解决它的原因。请注意,它并没有经过严格的测试,但至少它似乎可以工作。此外,如果您没有使用静态首页,则可能需要进行一些更改(尤其是get\\u选项(“page\\u for\\u posts”)。

还请注意,我使用“active parent”作为我的类名。这是因为我还使用了root的菜单清理代码,它将所有“current\\u page”类替换为“active”、“active parent”和“active祖先”。您可能想改用“官方”WP类名。

<?php
add_filter(\'nav_menu_css_class\', \'sleek_active_archive_link_on_taxonomies\', 10, 2);

function sleek_active_archive_link_on_taxonomies ($cssClasses, $item) {
    global $wp_query;

    # Only do this on archive pages
    if (is_archive()) {
        # This is the link to the blog archive
        if ($item->object_id == get_option(\'page_for_posts\')) {
            # If we\'re on a blog archive - give the blog link the active class
            if (is_category() or is_tag() or is_day() or is_month() or is_year()) {
                $cssClasses[] = \'active-parent\';
            }
        }
        # This is a link to a custom post type archive
        elseif ($item->type == \'post_type_archive\') {
            # If we\'re on a taxonomy and this post type has that taxonomy - make it look active
            if (is_tax()) {
                global $wp_taxonomies;

                $term = $wp_query->get_queried_object();

                if (isset($wp_taxonomies[$term->taxonomy])) {
                    if (in_array($item->object, $wp_taxonomies[$term->taxonomy]->object_type)) {
                        $cssClasses[] = \'active-parent\';
                    }
                }
            }
        }
    }

    return $cssClasses;
}
?>

相关推荐

用标准的干净文件替换NAV-menus.php文件?

我是一个自学成才的wordpress网站设计师,请原谅我的无知。我为一个客户开发的几个网站最近被一个印尼黑客组织破坏了(很有趣!)。客户端没有更新wordpress安装和其他一些危及安全的事情。遗憾的是,没有网站的清理备份。网络主机给了我一个包含恶意软件扫描结果的文本文件。看起来很多受影响的文件都是导航菜单。网站的php文件。文本文件中显示的扫描结果示例如下:“[主目录]/[网站文件夹名称]/wp includes/nav-menu.php:SL-php-INJECTOR-1-ejw.UNOFFICIAL