Hi all,
I just joined DW as I'm trying to find a "hopefully" relatively simple solution but I don't know enough php.
I have a plugin called wp-noexternallinks (can be seen here). Essentially, it will take a link on one of my posts and instead of just going straight to the destination url, it will "mask" it by showing the link as when you hover.
What I'd like to do is instead of the mask, to have the url go to a "bridge" page where I would say something like "You are about to leave this site. You will be redirected in x-seconds" kind of thing. I would then have something like bridgepage.php where the link would redirect to after being clicked then after x-seconds would redirect again and to go http://anothersite.com. Does that make sense?
The flow would look like:
link on my site (clicked) >> go to >> bridgepage.php >> redirected in x-seconds >> anothersite.com
I have VERY limited php knowledge but I pasted the info below that I hope would be enough to get some advice on which variable or function (or both) to change to make this happen.
I hope it's ok but I'm pasting the entire code of one of the plugins php pages below.
Thanks for any help
Scott
<?php
if(strpos(getcwd(),'wp-content/plugins/wp-noexternallinks'))
die('Error: Plugin "wp-noexternallinks" does not support standalone calls, damned hacker.');
function wp_noextrenallinks_parser($matches)
{
global $wp_rewrite,$wp_noexternallinks_parser;
if(!$wp_rewrite->using_permalinks())
$sep='?'.$wp_noexternallinks_parser->LINK_SEP.'=';
else
$sep='/'.$wp_noexternallinks_parser->LINK_SEP.'/';
if($wp_noexternallinks_parser->if_blank&&
(stripos($matches[2] . '//' .$matches[3],$wp_noexternallinks_parser->exclude_links[0])===FALSE))#do not add blank to internal links
$ifblank=' target="_blank"';
if($wp_noexternallinks_parser->if_nofollow&&
(stripos($matches[2] . '//' .$matches[3],$wp_noexternallinks_parser->exclude_links[0])===FALSE))#do not add nofollow to internal links
$ifnofollow=' rel="nofollow"';
#no masking for those urls (0 is the own blog/site url):
for($i=0;$i<sizeof($wp_noexternallinks_parser->exclude_links);$i++)
if($wp_noexternallinks_parser->exclude_links[$i])
if(stripos($matches[2] . '//' .$matches[3],$wp_noexternallinks_parser->exclude_links[$i])===0)#if begins with
return '<a'.$ifblank.' href="' . $matches[2] . '//' . $matches[3] . '" ' . $matches[1] . $matches[4] . '>' . $matches[5] . '</a>';
$url=($matches[2] . '//' . $matches[3]);
if(!$wp_noexternallinks_parser->disable_masking)
{
if(!$wp_rewrite->using_permalinks())
$url=urlencode($url);
$url=$wp_noexternallinks_parser->site.$sep.$url;
}
$link='<a'.$ifblank.$ifnofollow.' href="'.$url.'" '.$matches[1].$matches[4].'>'.$matches[5].'</a>';
if($wp_noexternallinks_parser->put_noindex)
$link='<noindex>'.$link.'</noindex>';
return $link;
}
class wp_noexternallinks_parser extends wp_noexternallinks
{
var $exclude_links,$if_blank,$if_nofollow,$disable_masking,$put_noindex,$site,$LINK_SEP;
function wp_noexternallinks_parser()#constructor
{
add_filter('template_redirect',array($this,'Redirect'),1);#modify template
$this->set_filters();
#init options
$this->exclude_links=array();
$this->site=get_option('home');
if(!$this->site)
$this->site=get_option('siteurl');
$p=strpos($this->site,'/',7);
if($p)
$this->exclude_links[]=substr($this->site,0,$p);#site root is excluded
else
$this->exclude_links[]=$this->site;
$this->exclude_links[]='javascript';#for javascript links :)
$this->exclude_links[]='#';#for internal links
$exclude=get_option('noexternallinks_exclude_links');
$exclude=@explode("\n",$exclude);
for($i=0;$i<sizeof($exclude);$i++)
$this->exclude_links[]=trim($exclude[$i]);
$this->if_blank=get_option('noexternallinks_add_blank');
$this->if_nofollow=get_option('noexternallinks_add_nofollow');
$this->put_noindex=get_option('noexternallinks_put_noindex');
$this->disable_masking=get_option('noexternallinks_disable_mask_links');
$this->LINK_SEP=get_option('noexternallinks_link_separator');
if(!$this->LINK_SEP)
$this->LINK_SEP='goto';}
function Redirect()
{
global $_REQUEST;
$goto='';
$p=strpos($_SERVER['REQUEST_URI'],'/'.$this->LINK_SEP.'/');
if($_REQUEST[$this->LINK_SEP])
$goto=$_REQUEST[$this->LINK_SEP];
elseif($p!==FALSE)
$goto=substr($_SERVER['REQUEST_URI'],$p+strlen($this->LINK_SEP)+2);
else
{
$url=$_SERVER['REQUEST_URI'];
$url=explode('/',$url);
if($url[sizeof($url)-2]==$this->LINK_SEP)
$goto=$url[sizeof($url)-1];
}
if(!strpos($goto,'://'))
$goto=str_replace(':/','://',$goto);
if($goto)
$this->redirect2($goto);
}
function redirect2($url)
{ global $wp_rewrite;
$this->init_lang();
if(!$wp_rewrite->using_permalinks())
$url=urldecode($url);
header('Content-type: text/html; charset="utf-8"',true);
if($url)
@header('Location: '.$url);
?>
<html><head><title><?php echo WPNEL_REDIRECTING;?></title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="robots" content="noindex,nofollow" />
<?php if($url) echo '<meta http-equiv="refresh" content="0; url='.$url.';" />'; ?>
</head><body style="margin:0;"><div align="center" style="margin-top: 15em;">
<?php
if($url)
echo WPNEL_REDIRECT1.'<a href="'.$url.'">'.WPNEL_REDIRECT2.'</a>'.WPNEL_REDIRECT3.$url.WPNEL_REDIRECT4;
else
echo (WPNEL_NO_REDIRECT);?>
</div></body></html><?php die();
}
function filter($content)
{
global $post,$wp_rewrite;
$mask = get_post_meta($post->ID, 'wp_noextrenallinks_mask_links', true);
if($mask==2)
return $content;
$pattern = '/<a (.*?)href=[\"\'](.*?)\/\/(.*?)[\"\'](.*?)>(.*?)<\/a>/i';
$content = preg_replace_callback($pattern,'wp_noextrenallinks_parser',$content);
return $content;
}
function set_filters()
{
if(FALSE===$this->mask_mine=get_option('noexternallinks_mask_mine'))
$this->mask_mine=1;
if(FALSE===$this->mask_comment=get_option('noexternallinks_mask_comment'))
$this->mask_comment=1;
if(FALSE===$this->mask_author=get_option('noexternallinks_mask_author'))
$this->mask_author=1;
if($this->mask_mine)
{
add_filter('the_content',array($this,'filter'),99);
add_filter('the_excerpt',array($this,'filter'),99);
}
if($this->mask_comment)
{
add_filter('comment_text',array($this,'filter'),99);
add_filter('comment_text_rss',array($this,'filter'),99);
add_filter('comment_url',array($this,'filter'),99);
}
if($this->mask_author)
{
add_filter('get_comment_author_url_link',array($this,'filter'),99);
add_filter('get_comment_author_link',array($this,'filter'),99);
add_filter('get_comment_author_url',array($this,'filter'),99);
}
}
}
$wp_noexternallinks_parser=new wp_noexternallinks_parser();
?>