function wp_loaded_tellink() {
ob_start('tellink_onclick');
}
function tellink_onclick($html) {
// 【<a href="tel:******" ***>】を取り出す配列【$checkArray[0]】
$target_tellink = '/<a.*?(href\s*?=\s*?\"\s*?(tel:.*?)\").*?>/';
preg_match_all($target_tellink,$html,$checkArray);
$anchorArray = $checkArray[0];
$hrefArray = $checkArray[1];
$telArray = $checkArray[2];
// hrefの中身両端にスペースがあれば削除
foreach( $telArray as &$telvalue ) {
$telvalue = trim($telvalue);
}
unset($telvalue);
// 値に【onclick = "】が存在し、その中に【ga (】が存在し、その中に【send】か【event】が存在する
$check1 = '/onclick\s*?=.*?ga\s*?\(.*?[(send)(event)].*?/';
// 値に【onclick = "】が存在する
$check2 = '/onclick\s*?=.*?\"/';
$resultArray = array();
foreach ( $anchorArray as $akey => $avalue ) {
//置換対象【href="tel:***"】
$repracestr = $hrefArray[$akey];
//置換後文字列
$outputstr = "href=\"".$telArray[$akey]."\" onclick=\"ga('send','event','tel','tap',('".$telArray[$akey]."');\"";
if (preg_match($check1,$avalue)) {
// なにもしない
} elseif (preg_match($check2,$avalue)) {
preg_match('/onclick\s*?=\s*?\"(.*?)\"/',$avalue,$avalue2);
//元々あったonclickを一旦削除
$html = str_replace($avalue2[0],"",$html);
//置換後文字列
$outputstr = "href=\"".$telArray[$akey]."\" onclick=\"ga('send','event','tel','tap',('".$telArray[$akey]."');".$avalue2[1]."\"";
$resultArray += array( $repracestr => $outputstr );
} else {
$resultArray += array( $repracestr => $outputstr );
}
}
$data1 = array_keys($resultArray);
$data2 = array_values($resultArray);
$html = str_replace($data1,$data2,$html);
return $html;
}
add_action('wp_loaded' , 'wp_loaded_tellink' , 99);