- 此文需要对add_filter() 有一定的理解, 以下代码都写在插件文件 icanfly.php中,关于如何创建插件可以参考文章 Wordpress插件开发 *
WP hook和filter文档可以查阅WP的官网,Code Reference
- 在菜单栏上加登录链接,用户登录后不显示
//其实是覆写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;
}
- 菜单栏上添加搜索表单
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;
}