在本教程中,我们将为主题 Zibll
的网址导航模板添加一个“友情链接状态检测”功能模块,用于实时检查友情链接是否可访问,并显示检测状态。
第一步:替换 links.php
模板文件
将以下完整代码复制并替换你的主题目录中的 links.php
文件(建议先备份原文件):
🚨 注:代码较长,已包含页面结构渲染、搜索封面、多分类链接展示、以及检测模块等完整功能。
第二步:在 functions.php
添加检测逻辑
接下来,我们需要添加一个 Ajax 接口,用于异步检测友情链接是否能正常访问。
请将以下代码添加到你的主题的 functions.php
或 func.php
文件中:
//友情链接自动检测
add_action('wp_ajax_check_single_link', 'check_single_link_callback');
add_action('wp_ajax_nopriv_check_single_link', 'check_single_link_callback');
// 检测单个链接状态
function check_single_link_callback() {
// 验证nonce
check_ajax_referer('zib_ajax', 'nonce');
if (!isset($_POST['url'])) {
wp_send_json_error('缺少URL参数');
return;
}
$url = esc_url_raw($_POST['url']);
$status = check_link_status($url);
if ($status['status']) {
$result = '<span class="badg c-green"><i class="fa fa-check-circle"></i> 正常</span>';
} else {
$error_msg = !empty($status['error']) ? $status['error'] : '连接失败';
$result = '<span class="badg c-red"><i class="fa fa-times-circle"></i> '.$error_msg.'</span>';
}
wp_send_json_success($result);
}
/**
* 检测链接状态
*/
function check_link_status($url) {
$ch = curl_init();
// 设置CURL选项
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 3);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36');
$response = curl_exec($ch);
$error = curl_error($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// 判断状态
if ($error) {
return array(
'status' => false,
'error' => $error
);
}
// 2xx和3xx状态码视为正常
$is_ok = ($http_code >= 200 && $http_code < 400);
return array(
'status' => $is_ok,
'error' => $is_ok ? '' : 'HTTP ' . $http_code
);
}
// 添加必要的JS全局变量
add_action('wp_head', 'add_ajax_global_vars');
function add_ajax_global_vars() {
$ajax_url = admin_url('admin-ajax.php');
?>
<script type="text/javascript">
console.log('AJAX URL:', '<?php echo $ajax_url; ?>');
var zib_ajax = {
ajax_url: '<?php echo $ajax_url; ?>',
nonce: '<?php echo wp_create_nonce("zib_ajax"); ?>'
};
</script>
<?php
}
功能说明
-
页面加载后会自动列出所有友情链接,并逐个发起异步请求检测其是否可访问。
-
检测结果实时展示于页面表格中,包括网站名、检测时间、状态。
-
状态分为:
-
✅ 正常访问
-
❌ 无法访问或错误
-
没有回复内容