子比主题美化-友链申请实现一键获取网站TDK信息功能代码

最近大家都在忙些什么呢?今天有一位站长分享了一个获取网站TDK的接口,问我是否能够在友链中实现一键获取网站信息的功能。其实,这个功能早在之前初一站长就已经发布过相关教程了,不过,由于接口已经失效,加上版本更新,导致原有的实现方式不再适用。今天整理了一下原有的代码进行了二次开发,喜欢的朋友可以自行获取!

教程适用于子比主题最新 8.1 版本,勿将本文用于其它版本或主题。

演示效果

20260506221146421-70

部署教程 将下方代码放置在主题目录下的function.php或者新建一个func.php文件

function zi<a href="https://blog.770504.asia/tag/b" title="更多关于 b 的文章-馨跃芸博客" target="_blank">b</a>_nav_links_ajax_hand() {
    $url = isset($_GET['link_url']) ? sanitize_text_field($_GET['link_url']) : '';

    if (empty($url)) {
        wp_send_json_error(['msg' => '网址不能为空']);
    }

    try {
        $api_response = zib_nav_links_curls('https://api.ahfi.cn/api/websiteinfo?url=' . urlencode($url));
        $response_data = json_decode($api_response, true);

        if ($response_data && isset($response_data['code']) && $response_data['code'] === 200) {
            wp_send_json_success([
                'title' => $response_data['data']['title'],
                'description' => $response_data['data']['description'],
                'msg' => $response_data['message']
            ]);
        } else {
            wp_send_json_error(['msg' => $response_data['message']]);
        }
    } catch (Exception $e) {
        wp_send_json_error(['msg' => '请求API时发生错误: ' . $e->getMessage()]);
    }
}

add_action('wp_ajax_zib_nav_links_ajax_hand', 'zib_nav_links_ajax_hand');
add_action('wp_ajax_nopriv_zib_nav_links_ajax_hand', 'zib_nav_links_ajax_hand');

function zib_nav_links_curls($url) {
    $ch = curl_init();
    $timeout = 30;
    $ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36';

    $options = [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_CONNECTTIMEOUT => $timeout,
        CURLOPT_FOLLOWLOCATION => 1,
        CURLOPT_USERAGENT => $ua,
        CURLOPT_SSL_VERIFYPEER => FALSE,
        CURLOPT_SSL_VERIFYHOST => FALSE
    ];

    curl_setopt_array($ch, $options);

    $content = curl_exec($ch);
    if ($content === false) {
        curl_close($ch);
        throw new Exception("cURL Error: " . curl_error($ch));
    }

    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($httpCode !== 200) {
        throw new Exception("HTTP Error: " . $httpCode);
    }

    return trim(mb_convert_encoding($content, 'UTF-8', mb_detect_encoding($content)));
}

function zib_nav_javascript() {
?>
<script>
$(function() {
    const buttonHtml = '<style>#link_description{width:87%;}</style><span class="abs-right" style="top: 68%;right:5px;"><button type="button" class="but jb-pink zbtool-submit" style="overflow: hidden; position: relative;line-height: 1.7;">一键获取</button></span>';
    const inputTag = $('input[name="link_description"]');
    if (inputTag.length === 0) return;
    inputTag.after(buttonHtml);

    function toggleButtonState(disabled) {
        $('.zbtool-submit').prop('disabled', disabled);
    }

    $('.zbtool-submit').on('click', function() {
        const url = $("input[name='link_url']").val();

        if (!url) {
            notyf("请输入网址", "danger", 0, "zib_nav_golink");
            return;
        }

        toggleButtonState(true);  
        notyf("加载中,请稍等...", "load", 2000, "zib_nav_golink");

        jQuery.ajax({
            type: "GET",
            dataType: "json",
            url: "<?php echo esc_url(admin_url('admin-ajax.php')) ?>",
            data: {
                action: "zib_nav_links_ajax_hand",
                link_url: url
            },
            success: function(response) {
                toggleButtonState(false); 
                if (response.success) {
                    $("#link_name").val(response.data.title);
                    $("#link_description").val(response.data.description);
                    notyf(response.data.msg, "", 0, "zib_nav_golink");
                } else {
                    notyf(response.data.msg, "danger", 0, "zib_nav_golink");
                }
            },
            error: function(errorThrown) {
                toggleButtonState(false);  
                console.error("Ajax请求失败:", errorThrown);
                notyf("请求失败,请重试", "danger", 0, "zib_nav_golink");
            }
        });
    });
});
</script>
<?php
}
add_action('wp_footer', 'zib_nav_javascript');

 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容