一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

WORDPRESS菜单自定义链接设置打开新窗口教程

时间:2015-11-13 编辑:简简单单 来源:一聚教程网

WordPress自定义菜单可以添加自定义链接,也就是设置一个自定义的url作为菜单,但是默认个自定义链接打开方式是当前页面跳转,如何给这个链接设置target=’_blank’属性呢?


在WordPress源码中找到可以改变菜单属性的一个filter,位于D:\xampp\htdocs\wp\wp-includes\nav-menu-template.php:


/**
 * Filter the sorted list of menu item objects before generating the menu's HTML.
 *
 * @since 3.1.0
 *
 * @param array  $sorted_menu_items The menu items, sorted by each menu item's menu order.
 * @param object $args              An object containing wp_nav_menu() arguments.
 */
$sorted_menu_items = apply_filters( 'wp_nav_menu_objects', $sorted_menu_items, $args );
这个filter的名字叫做wp_nav_menu_objects,可以在主题的functions中添加如下代码:

 

//菜单自定义链接使用target='_blank'
function add_custom_url_target_attr($sorted_menu_items)
{
    foreach ( $sorted_menu_items as $menu ) {
        if( $menu->type = 'custom' ){
            $menu->target = '_blank';
        }
    }
 
    return $sorted_menu_items;
}
add_filter('wp_nav_menu_objects', 'add_custom_url_target_attr');
通过这个wp_nav_menu_objects的hook(钩子),就实现了新窗口打开这个菜单链接。

其实,我们可以把要往functions.php中添加的函数写到一个自定义插件中,这个插件专门放我们自己的function,这样更改主题也不用管主题的functions.php文件。

在插件目录plugin目录新建一个文件夹叫myfunc,里面新建一个myfun.php文件:


/**
 * @package myfunc
 * @version 1.0
 */

 
//菜单自定义链接使用target='_blank'
function add_custom_url_target_attr($sorted_menu_items)
{
    foreach ( $sorted_menu_items as $menu ) {
        if( $menu->type = 'custom' ){
            $menu->target = '_blank';
        }
    }
 
    return $sorted_menu_items;
}
add_filter('wp_nav_menu_objects', 'add_custom_url_target_attr');

这样就是一个最简单的插件了,注意myfun.php前面的注释一定要按照这样的格式写,WordPress通过这个注释来识别是不是一个插件的入口,有新的本来需要放入主题functios.php的函数可以放到这个文件后面加。

热门栏目