Wordpress 修改菜单/导航

  • 此文需要对add_filter() 有一定的理解, 以下代码都写在插件文件 icanfly.php中,关于如何创建插件可以参考文章 Wordpress插件开发 *

WP hook和filter文档可以查阅WP的官网,Code Reference

  1. 在菜单栏上加登录链接,用户登录后不显示
//其实是覆写wp的wp_nav_menu_items函数
add_filter('wp_nav_menu_items', 'add_login_menu_to_nav', 10, 2);

function add_login_menu_to_nav( $items, $args ) {
    if (!is_user_logged_in() 
    && isset($args->menu->name) 
    && $args->menu->name == 'your-nav-name') {
        $login_url = 'https://login-url';
        $items .= '<li id="menu-item-x" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-x contained"><div class="wrap"><a href="'. $login_url .'"><span>登录</span></a></div></li>';
    }
    return $items;
}
  1. 菜单栏上添加搜索表单
add_filter('wp_nav_menu_items', 'add_search_form', 10, 2);

function add_search_form($items, $args) {
          if( $args->menu->name == 'your-nav-name' ){
          $items .= '<li class="menu-item">'
                  . '<form role="search" method="get" class="search-form" action="'.home_url( '/' ).'">'
                  . '<label>'
                  . '<span class="screen-reader-text">' . _x( 'Search for:', 'label' ) . '</span>'
                  . '<input type="search" class="search-field" placeholder="' . esc_attr_x( 'Search …', 'placeholder' ) . '" value="' . get_search_query() . '" name="s" title="' . esc_attr_x( 'Search for:', 'label' ) . '" />'
                  . '</label>'
                  . '<input type="submit" class="search-submit" value="'. esc_attr_x('Search', 'submit button') .'" />'
                  . '</form>'
                  . '</li>';
          }
        return $items;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容