我已经尽力创建标签插件,但是这里有很多。我的目标是我想从html标签等中排除标签链接。我想过很多主意,但似乎永远都行不通。它应该只跳过这些html部分。请帮助我。
$replace_times=3;
add_action('admin_menu','tag2link_setting_options');
add_filter('the_content','tag2link');
init_tag2link();
$tags;
function init_tag2link(){
add_option('tag2link_times');
add_option('tag2link_use');
}
function getPostTags(){
global $post_ID;
}
function tag2Link($s){
global $id;
global $replace_times;
global $wp_rewrite;
$te=get_option('tag2link_use');
if($te=='te') $useTe=true;
else $useTe=false;
$us=get_option('tag2link_times');
$replace_times=intval($us);
if($replace_times==0) $replace_times=3;
/*
Get tag permalink structure
*/
//$structure=$this->get_tag_permastruct();
$ss=$wp_rewrite->get_tag_permastruct();
$structure="";
if($ss==false) {
$structure=get_option('siteurl').'/?tag=%tag%';
}else $structure=get_option('siteurl').$ss;
/*
Get post tags
*/
$tags=wp_get_post_tags($id);
$p=$s;
if($tags==null) return $p;
/*
Start replace
*/
$count=count($tags);
usort($tags,cmp);
$temp=$structure;
foreach($tags as $value){
if($useTe){
$pattern='/(?<=[^a-zA-Z])'.$value->name.'(?!.*<\/a>)/';
$replace='<a href="http://localhost/wordpress/tag/'.$value->slug.'">'.$value->name.'</a>';
$p=preg_replace($pattern,$replace,$p,$replace_times);
}
else{
$structure=str_replace('%tag%',$value->slug,$temp);
if($ss==false){
$pattern='/(?<=[^a-zA-Z])'.$value->name.'(?!.*<\/a>)/';
//$pattern='/(?<!\/\?)(?<!\w)'.$value->name.'(?!\w)(?!(\s|\w)*<\/a>)/';
}else{
//$pattern='/(?<!\/)(?<!\w)'.$value->name.'(?!\w)(?!(\s|\w)*<\/a>)/';
$pattern='/(?<=[^a-zA-Z])'.$value->name.'(?!.*<\/a>)/';
}
$tag_permalink = get_tag_link($value->term_id);
$replace='<a href="'. $tag_permalink .'">'.$value->name.'</a>';
$p=preg_replace($pattern,$replace,$p,$replace_times);
}
}
return $p;
}
function cmp($a,$b){
return strlen($a->name)-strlen($b->name);
}
function tag2link_setting_options(){
add_options_page('Tag to Links', 'Tag to Links', 5, 'automatic-tag-link/options.php');
在代码中,我不希望标记链接全部出现在h2,h2,h1,h4,html文本中。包括,标签等。请我真的需要这个。我已经尽力了,但没有出路。
答案 0 :(得分:0)