分享知更鸟Begin主题外链跳转代码,兼容下载按钮和弹出层上的外链

今天 osx86 问我,说网上找的代码用到 begin 主题上,会导致下载按钮(href=#button)也被替换,导致无法弹出下载界面。其实张戈博客之前分享过一个博客外链转内链的跳转到代码,可以兼容 HotNewspro 主题的下载按钮和文章索引,于是我要他站内搜索下。

他用了后发现确实可以,不过给我反馈了一个问题:确实滤过了下载按钮和索引,但是弹出层上的下载链接没有被替换成跳转链。

我随即看了下,发现确实是这样。因为代码是在文章 content 过滤的,而下载按钮是独立的模板,所以并不会生效。

唉,世上无难事,依葫芦画瓢是也!

方法很简单,找到下载按钮相关模板文件,然后替换不就得了吗?且往下看。

一、新增函数

将如下 php 代码添加到 主题目录下的 functions.php 文件中:

/**
* WordPress 简单的外链判断和跳转函数,兼容非常规的 a 标签
* 文章地址:https://zhang.ge/5041.html
* 跳转代码:https://zhang.ge/2703.html
*/
function link_nofollow($url)
{
    if(strpos($url,'://')!==false && strpos($url,home_url())===false)
    {
	 $url = str_replace($url, home_url()."/go/?url=".$url,$url);
     }
     return $url;	
}

这个函数使用很简单,直接传入链接,函数会自动判断,并绝对会返回一个内链,比如:

<?php echo link_nofollow(“http://www.baidu.com”);?>

就会输出:

https://zhang.ge/go/?url=http://www.baidu.com

需要配合张戈博客之前分享的跳转代码,详见 https://zhang.ge/2703.html

二、修改模板

已经有了替换函数了,下一步就是找到你要替换的地方,将原先的值传入函数即可。Begin 的下载弹出层代码位于 begin/inc/file.php

原始代码如下:

<?php if ( get_post_meta($post->ID, 'button1', true) ) : ?>
<div id="button_box">
	<div id="button_file">
		<h3>文件下载</h3>
			<div class="file_ad" align="center"><?php echo stripslashes( zm_get_option('ad_f') ); ?></div>
			<div class="buttons">
			<?php if ( get_post_meta($post->ID, 'button1', true) ) : ?>
			<?php $button1 = get_post_meta($post->ID, 'button1', true); ?>
			<?php $url1 = get_post_meta($post->ID, 'url1', true); ?>
			<a href="<?php echo $url1; ?>" rel="external nofollow" target="_blank"><?php echo $button1; ?></a>
			<?php endif; ?>
			<?php if ( get_post_meta($post->ID, 'button2', true) ) : ?>
			<?php $button2 = get_post_meta($post->ID, 'button2', true); ?>
			<?php $url2 = get_post_meta($post->ID, 'url2', true); ?>
			<a href="<?php echo $url2; ?>" rel="external nofollow" target="_blank"><?php echo $button2; ?></a>
			<?php endif; ?>
			<?php if ( get_post_meta($post->ID, 'button3', true) ) : ?>
			<?php $button3 = get_post_meta($post->ID, 'button3', true); ?>
			<?php $url3 = get_post_meta($post->ID, 'url3', true); ?>
			<a href="<?php echo $url3; ?>" rel="external nofollow" target="_blank"><?php echo $button3; ?></a>
			<?php endif; ?>
			<?php if ( get_post_meta($post->ID, 'button4', true) ) : ?>
			<?php $button4 = get_post_meta($post->ID, 'button4', true); ?>
			<?php $url4 = get_post_meta($post->ID, 'url4', true); ?>
			<a href="<?php echo $url4; ?>" rel="external nofollow" target="_blank"><?php echo $button4; ?></a>
			<?php endif; ?>
		</div>
		<div class="clear"></div>
	</div>
</div>
<?php endif; ?>

其中的 url1-4 就是我们要处理的目标,所以如下修改即可:

<?php if ( get_post_meta($post->ID, 'button1', true) ) : ?>
<div id="button_box">
	<div id="button_file">
		<h3>文件下载</h3>
			<div class="file_ad" align="center"><?php echo stripslashes( zm_get_option('ad_f') ); ?></div>
			<div class="buttons">
			<?php if ( get_post_meta($post->ID, 'button1', true) ) : ?>
			<?php $button1 = get_post_meta($post->ID, 'button1', true); ?>
                        <!-- 用我们自定义的函数过滤一下即可 -->
			<?php $url1 = link_nofollow(get_post_meta($post->ID, 'url1', true)); ?>
			<a href="<?php echo $url1; ?>" rel="external nofollow" target="_blank"><?php echo $button1; ?></a>
			<?php endif; ?>
			<?php if ( get_post_meta($post->ID, 'button2', true) ) : ?>
			<?php $button2 = get_post_meta($post->ID, 'button2', true); ?>
			<?php $url2 = link_nofollow(get_post_meta($post->ID, 'url2', true)); ?>
			<a href="<?php echo $url2; ?>" rel="external nofollow" target="_blank"><?php echo $button2; ?></a>
			<?php endif; ?>
			<?php if ( get_post_meta($post->ID, 'button3', true) ) : ?>
			<?php $button3 = get_post_meta($post->ID, 'button3', true); ?>
			<?php $url3 = link_nofollow(get_post_meta($post->ID, 'url3', true)); ?>
			<a href="<?php echo $url3; ?>" rel="external nofollow" target="_blank"><?php echo $button3; ?></a>
			<?php endif; ?>
			<?php if ( get_post_meta($post->ID, 'button4', true) ) : ?>
			<?php $button4 = get_post_meta($post->ID, 'button4', true); ?>
			<?php $url4 = link_nofollow(get_post_meta($post->ID, 'url4', true)); ?>
			<a href="<?php echo $url4; ?>" rel="external nofollow" target="_blank"><?php echo $button4; ?></a>
			<?php endif; ?>
		</div>
		<div class="clear"></div>
	</div>
</div>
<?php endif; ?>

保存后,文章下载弹出层里面的外链就变成了内链跳转的模式了。

代码和方法都非常简单,有需要的自己折腾吧!不清楚的可以参考一下之前分享 2 篇文章:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇