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

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文件:

<?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的函数可以放到这个文件后面加。

时间: 2024-10-23 20:53:07

WORDPRESS菜单自定义链接设置打开新窗口教程的相关文章

网站设置打开新窗口页面与本地窗口页面对SEO有什么影响?

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 我们在进行网站优化的过程中,是设置打开新窗口有利于SEO,还是设置本窗口打开更利于呢?可能有些人会有这样的疑问. 本窗口与新窗口的区别就是在于用户体验上面的区别:打个比方说,你通过搜索一个关键词到达到A页面,看着看着你看到A页面有个锚文本非常的突出,随之你就去点了一下这个页面,弹出页面B,等你看到B页面的时候,你发现跟你开始看的不一样了,你想

不再闹心 IE无法打开新窗口现象与解决

长夜漫漫,无心睡眠,小菜打算上网看看新闻.启动IE,打开常去的网站,新闻真不少.点击一条新闻,新窗口没有弹出来,再点,还是没动静.小菜连忙在QQ群中呼救,很快故障就解决了. 一.绿色惊叹号 1.故障现象 点击页面中的二级链接后,鼠标指针显示一个绿色的惊叹号,但很快会消失. 2.故障原因 用户安装过第三方弹出广告阻止工具或其他捆绑弹出广告阻止工具的软件,如3721弹出广告阻止工具条.其可减少弹出广告骚扰,同时也会导致IE二级链接无法打开. 3.故障解决 在工具栏3721弹出窗口拦截工具条的"已拦截

页面上所有的链接都在新窗口打开

链接|页面     要想页面上所有的链接都在新窗口打开,在页面中加入:     <head>     <base target="_blank">     </head>     注意事项:< base >必须写在< head >标记里

swfobject出来的FLASH打开链接是在新窗口打开的。我想改成原窗口打开的,谁知道怎么改吗

问题描述 swfobject出来的FLASH打开链接是在新窗口打开的.我想改成原窗口打开的,谁知道怎么改吗急啊. 解决方案 解决方案二:有谁知道吗

JS打开新窗口防止被浏览器阻止的方法_javascript技巧

本文实例讲述了JS打开新窗口防止被浏览器阻止的方法.分享给大家供大家参考.具体分析如下: 用传统的window.open()方式打开新窗口,会被浏览器阻止,那么,我们如何才能让JS打开新窗口不被浏览器阻止呢?其实办法还是有的,这里我们就来分析一下如何解决这个问题 我最近也遇到了这样的问题,所以就把弹出新窗口的方法分享给大家.欢迎大家补充哦... 第一种.使用原生javascript的window.open()方法(大部分情况下会被浏览自阻止) 第二种.模拟表单(form)提交,原理是指定表单的a

使用按钮控制以何种方式打开新窗口的属性介绍_基础知识

<!-- 把下面代码放到<body>区域中 --> 复制代码 代码如下: <form> <div align="left"> <input type="button" Value="打开新窗口" ONCLICK="window.open('index.htm','Sample','toolbar=yes,location=no,directories=no,status=no,men

使用window.open自动打开新窗口并且自动关闭新窗口

Html代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author"

js使用post 方式打开新窗口

这篇文章主要介绍了js使用post 方式打开新窗口的相关资料,需要的朋友可以参考下 js中一般新打开窗口很简单直接window.open(url);就可以了, 但是由于我希望传递参数到服务端,而且参数看起来很长一串,而且get方式的提交参数长度是有限制的,因此我有以下需求: 1,js中实现post提交 2,返回的页面在新窗口显示 首先我是这么做的: 代码如下: $.ajax({ type: "POST", url: '${contextPath}/analyse/detail.do',

标签页-如何打开新页面而不是打开新窗口?

问题描述 如何打开新页面而不是打开新窗口? 这种windon.open的方式是在新的窗口打开,我现在想在新标签页打开,该怎么写? 解决方案 用frame,设置它的src 解决方案二: 用window.localtion(). window.open()是打开新页面,也可以设置成打开页面