WordPress子比主题友情链接页面添加添加一个站点可用性检测 - 教程分享论坛 - 综合板块 - 大理鱼儿的小破站

WordPress子比主题友情链接页面添加添加一个站点可用性检测

在本教程中,我们将为主题 Zibll 的网址导航模板添加一个“友情链接状态检测”功能模块,用于实时检查友情链接是否可访问,并显示检测状态。

第一步:替换 links.php 模板文件

将以下完整代码复制并替换你的主题目录中的 links.php 文件(建议先备份原文件):

🚨 注:代码较长,已包含页面结构渲染、搜索封面、多分类链接展示、以及检测模块等完整功能。

第二步:在 functions.php 添加检测逻辑

接下来,我们需要添加一个 Ajax 接口,用于异步检测友情链接是否能正常访问。

请将以下代码添加到你的主题的 functions.phpfunc.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
}

功能说明

  • 页面加载后会自动列出所有友情链接,并逐个发起异步请求检测其是否可访问。

  • 检测结果实时展示于页面表格中,包括网站名、检测时间、状态。

  • 状态分为:

    • ✅ 正常访问

    • ❌ 无法访问或错误

请登录后发表评论

    没有回复内容