成航先森 成航先森

成都航院计算机系一个学生的个人博客

 

WordPress技巧

最新文章

WordPress技巧
当前位置: 首页 » 建站分享 » WordPress技巧 » WordPress整站链接新窗口打开模式下指定链接本窗口打开

WordPress整站链接新窗口打开模式下指定链接本窗口打开

编辑:狂族晨曦 来源:WordPress技巧 日期:2016-03-22 阅读: 1,928 次 抢个沙发 百度已收录

最后更新时间:2016-04-22

先森曾转载过一篇鸟叔转载的文章,这篇文章的内容是分别将WordPress后台、访客评论链接、友情链接设置为在新窗口打开,和一个大招,非常简单的代码让网站上所有链接都在新窗口打开。有兴趣的可以去看看:

本文主要讲的是,如何在上文中所说的大招情况下,让部分链接能够在本窗口打开。这个大招非常霸道,但是设置起来却非常简单,上文中的描述都很少:

设置全站链接在新窗口打开 -1

设置全站链接在新窗口打开

其中的重点,也就是加入红框内的代码。其实就是将所有链接的打开方式target设置成了_blank,这个属性,我们在单独设置链接的时候也时常用到。

这样设置的好处是,你不用再一个一个的给链接添加该属性,访客也不容易直接跳出你的网站。但是缺点也是显而易见,访客在访问你的网站时,每点击一个链接都会新开一个窗口,要是窗口打开多了,会让人感到厌烦。

所以先森这次想要实现的目标是,自己设置一些链接,能够让其不受<base target="_blank">的影响。

不是所有的链接都需要设置新窗口打开,本次先森就拿文章列表归档页的页码下手。

解决问题

首先,先森从百度了解到,在设置了<base target="_blank">之后,单独给链接设置target="_self"之后,链接就会变成本窗口打开。

这样当然简单,但是本次先森还要将其用到归档页的页码中,没想到还遇到一点问题。

关于归档页的页码,先森用的是倡萌提供的代码。需要的可以参考下:

其中核心的代码就是在functions.php中添加以下代码,然后调用即可:

function par_pagenavi($range = 9){
	global $paged, $wp_query;
	if ( !$max_page ) {$max_page = $wp_query->max_num_pages;}
	if($max_page > 1){if(!$paged){$paged = 1;}
	if($paged != 1){echo " 返回首页 ";}
	previous_posts_link(' 上一页 ');
    if($max_page > $range){
		if($paged < $range){for($i = 1; $i <= ($range + 1); $i++){echo "$i";}}
    elseif($paged >= ($max_page - ceil(($range/2)))){
		for($i = $max_page - $range; $i <= $max_page; $i++){echo "$i";}}
	elseif($paged >= $range && $paged < ($max_page - ceil(($range/2)))){
		for($i = ($paged - ceil($range/2)); $i <= ($paged + ceil(($range/2))); $i++){echo "$i";}}}
    else{for($i = 1; $i <= $max_page; $i++){echo "$i";}}
	next_posts_link(' 下一页 ');
    if($paged != $max_page){echo " 最后一页 ";}}

根据链接打开方式的规则,可以很简单的完成代码的改造。上面输出了很多种的a标签,我们只需要在里面加入target=_self即可。但是,这些都很好解决,上面的代码中还有两个不同的代码,它们是自动输出a标签,不需要再次添加:

previous_posts_link(' 上一页 ');
next_posts_link(' 下一页 ');

就是“上一页”和“下一页”这两个代码。这是WordPress自带的函数,括号里的是要显示的文本,而整个输出,则直接是一个a标签。关于用法,大家自行百度。

那么问题就来了,这样先森就不能直接在a标签中加本窗口打开的代码了呀。

百度后了解到,还有另外两个函数:

get_previous_posts_link();
get_next_posts_link();

这两个函数的用法和去掉“get_”的用法一样,但是不会直接输出,在前面加输出“echo”后就和不加“get_”的完全一样了。

先森没有找到能够直接获取a标签中上一页与下一页链接的方法,只知道上面两个函数。没办法,曲线救国,先森想到了替换。

PHP替换函数,先森曾经介绍过:

点击可以学习函数的用法,这里先森就不累述了。直接贴出最终的代码;

//文章分页代码
function par_pagenavi($range = 9){
	global $paged, $wp_query;
	if ( !$max_page ) {$max_page = $wp_query->max_num_pages;}
	if($max_page > 1){if(!$paged){$paged = 1;}
	if($paged != 1){echo "<a href='" . get_pagenum_link(1) . "' class='extend' title='跳转到第一页' target=_self> 首页 </a>";}
	$previous_posts= get_previous_posts_link(' 上一页 ');
	$tihuan_i=1;
	echo str_replace(">"," title='跳转到上一页' target=_self>",$previous_posts,$tihuan_i);
    if($max_page > $range){
		if($paged < $range){for($i = 1; $i <= ($range + 1); $i++){echo "<a href='" . get_pagenum_link($i) ."'";
		if($i==$paged)echo " class='current'";echo " target=_self>$i</a>";}}
    elseif($paged >= ($max_page - ceil(($range/2)))){
		for($i = $max_page - $range; $i <= $max_page; $i++){echo "<a href='" . get_pagenum_link($i) ."'";
		if($i==$paged)echo " class='current'";echo " target=_self>$i</a>";}}
	elseif($paged >= $range && $paged < ($max_page - ceil(($range/2)))){
		for($i = ($paged - ceil($range/2)); $i <= ($paged + ceil(($range/2))); $i++){echo "<a href='" . get_pagenum_link($i) ."'";if($i==$paged) echo " class='current'";echo " target=_self>$i</a>";}}}
    else{for($i = 1; $i <= $max_page; $i++){echo "<a href='" . get_pagenum_link($i) ."'";
    if($i==$paged)echo " class='current'";echo " target=_self>$i</a>";}}
	$next_posts= get_next_posts_link(' 下一页 ');
	echo str_replace(">"," title='跳转到下一页' target=_self>",$next_posts,$tihuan_i);
    if($paged != $max_page){echo "<a href='" . get_pagenum_link($max_page) . "' class='extend' title='跳转到最后一页' target=_self> 最后一页 </a>";}}
	else {echo '<a href="javascript:;">共1页</a>';}
}

修改代码->保存->检查->OK:

代码生效 -2

代码生效

先森目前发现需要本窗口打开的链接还仅仅是页码,以后也许会陆陆续续的修改很多,这里也就不再多说了。

标签:
除特别注明外,本站所有文章均为成航先森 www.capjsj.cn 原创,本文共3755个字
转载请注明出处来自https://www.capjsj.cn/wp_zzljxckdkmsxzdljbckdk.html
已有 0 位"计工"发布了激烈的评论,还有N多人围观笑而不语评论
的头像
欢迎发表评论
取消评论

表情
疑问调皮伤心抠鼻黑线微笑可爱奸笑震惊吓到了撇嘴大兵忍不住笑笑狂骂狂怒噢?鼓掌酷⊙﹏⊙b汗鄙视大哭嘿嘿

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
官方微信
发表评论 返回顶部