wp文章内url链接识别

举例:后台输入域名:www.onexin.net,前台输出的结果会自动变成http://开头的链接。

email也如此,都被自动识别并添加上了链接。

相关文件:/wp-includes/formatting.php

make_clickable函数

//开启文章识别网址,邮件地址
add_filter( 'the_content', 'make_clickable' );

/**
 * Callback to convert URI match to HTML A element.
 *
 * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
 * make_clickable()}.
 *
 * @since 2.3.2
 * @access private
 *
 * @param array $matches Single Regex Match.
 * @return string HTML A element with URI address.
 */
function _make_url_clickable_cb($matches) {
 $url = $matches[2];

 $url = esc_url($url);
 if ( empty($url) )
 return $matches[0];

 return $matches[1] . "<a href=\"$url\" rel=\"nofollow\">$url</a>";
}


/**
 * Callback to convert URL match to HTML A element.
 *
 * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
 * make_clickable()}.
 *
 * @since 2.3.2
 * @access private
 *
 * @param array $matches Single Regex Match.
 * @return string HTML A element with URL address.
 */
function _make_web_ftp_clickable_cb($matches) {
 $ret = '';
 $dest = $matches[2];
 $dest = 'http://' . $dest;
 $dest = esc_url($dest);
 if ( empty($dest) )
 return $matches[0];

 // removed trailing [.,;:)] from URL
 if ( in_array( substr($dest, -1), array('.', ',', ';', ':', ')') ) === true ) {
 $ret = substr($dest, -1);
 $dest = substr($dest, 0, strlen($dest)-1);
 }
 return $matches[1] . "<a href=\"$dest\" rel=\"nofollow\">$dest</a>$ret";
}

/**
 * Callback to convert email address match to HTML A element.
 *
 * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link
 * make_clickable()}.
 *
 * @since 2.3.2
 * @access private
 *
 * @param array $matches Single Regex Match.
 * @return string HTML A element with email address.
 */
function _make_email_clickable_cb($matches) {
 $email = $matches[2] . '@' . $matches[3];
 return $matches[1] . "<a href=\"mailto:$email\">$email</a>";
}

/**
 * Convert plaintext URI to HTML links.
 *
 * Converts URI, www and ftp, and email addresses. Finishes by fixing links
 * within links.
 *
 * @since 0.71
 *
 * @param string $ret Content to convert URIs.
 * @return string Content with converted URIs.
 */
function make_clickable($ret) {
 $ret = ' ' . $ret;
 // in testing, using arrays here was found to be faster
 $ret = preg_replace_callback('#(?<=[\s>])(\()?([\w]+?://(?:[\w\\x80-\\xff\#$%&~/=?@\[\](+-]|[.,;:](?![\s<]|(\))?([\s]|$))|(?(1)\)(?![\s<.,;:]|$)|\)))+)#is', '_make_url_clickable_cb', $ret);
 $ret = preg_replace_callback('#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]+)#is', '_make_web_ftp_clickable_cb', $ret);
 $ret = preg_replace_callback('#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i', '_make_email_clickable_cb', $ret);
 // this one is not in an array because we need it to run last, for cleanup of accidental links within links
 $ret = preg_replace("#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i", "$1$3</a>", $ret);
 $ret = trim($ret);
 return $ret;
}

转载请注明出处:https://www.onexin.net/url-link-to-the-article-identified-wp/

随机文章:

1、自己制作FLV播放器
https://www.onexin.net/%e8%87%aa%e5%b7%b1%e5%88%b6%e4%bd%9cflv%e6%92%ad%e6%94%be%e5%99%a8/

2、supesite远程图片本地化并作为文章附件
https://www.onexin.net/supesite-remote-image-localization-and-as-a-post-attachments/

3、浅谈屏蔽搜索引擎爬虫(蜘蛛)抓取/索引/收录网页的几种思路
https://www.onexin.net/on-the-screen-the-search-engine-spiders-spiders-to-crawl-index-page-contains-several-ideas/

4、[个人潜能5B]创造你的未来:设定目标研习会
https://www.onexin.net/personal-potentials-5b-and-create-your-future-goal-setting-workshops/

5、Discuz!Q 如何数据备份?
https://www.onexin.net/discuzq-backup/

Leave a Reply