php - WordPress 菜单中的自定义事件菜单项

标签 php wordpress

我有一个 WordPress 主题,使用 wp_nav_menu() 来构建菜单。我在此菜单中有一个自定义菜单项,该菜单项会转到非标准 WordPress 页面。有没有办法可以根据 url 字符串中的匹配有条件地将此导航项设置为当前导航项?

谢谢

最佳答案

您可以使用 WordPress 中的 nav_menu_css_class 来实现您想要的结果。使用此 Hook ,您可以更改可应用于菜单的 CSS 类数组。

add_filter( 'nav_menu_css_class', 'add_parent_url_menu_class', 10, 2 );

function add_parent_url_menu_class( $classes = array(), $item = false ) {
    // Get current URL
    $current_url = current_url();
    // Get homepage URL
    $homepage_url = trailingslashit( get_bloginfo( 'url' ) );
    // Exclude 404 and homepage
    if( is_404() or $item->url == $homepage_url ) return $classes;
        if ( strstr( $current_url, $item->url) ) {
            // Add the 'parent_url' class
            $classes[] = 'parent_url';
        }
    return $classes;
}

function current_url() {
    // Protocol
    $url = ( 'on' == $_SERVER['HTTPS'] ) ? 'https://' : 'http://';
    $url .= $_SERVER['SERVER_NAME'];
    // Port
    $url .= ( '80' == $_SERVER['SERVER_PORT'] ) ? '' : ':' . $_SERVER['SERVER_PORT'];
    $url .= $_SERVER['REQUEST_URI'];

    return trailingslashit( $url );
}

此方法将忽略 404 页面或站点的根目录,但如果当前 URL 与菜单项 URL 匹配,则会将该类添加到菜单项。

此代码完全归功于:http://www.rarescosma.com/2010/11/add-a-class-to-wp_nav_menu-items-with-urls-included-in-the-current-url/

关于php - WordPress 菜单中的自定义事件菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11329378/

相关文章:

mysql - SQL 查询在 WooCommerce 中按标签选择产品?

PHP 更新现有记录失败

PHP/MySQL : How to query row data information as column data?

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

php - 如果未找到 array_search 查询

javascript - wordpress : scroll-up messes up content position on mobile 中的 fullpage.js

php - 在 WordPress 的非 Divi 页面中加载 Divi 库组件

php - 使用 strftime 返回 00 获取 2011 年 1 月 1 日的周数

php - wordpress post中某个链接的点击次数

CSS - Wordpress 将两个 iframe 与文本并排放置