// Minify HTML Output
function minify_html($buffer) {
// Các biểu thức chính quy để tìm và thay thế các khoảng trắng không cần thiết
$search = array(
'/\>[^\S ]+/s', // Xóa khoảng trắng thừa sau dấu `>`
'/[^\S ]+\</s', // Xóa khoảng trắng thừa trước dấu `<`
'/(\s)+/s' // Thay thế nhiều khoảng trắng bằng một khoảng trắng duy nhất
);
$replace = array('>', '<', '\\1');
$buffer = preg_replace($search, $replace, $buffer);
return $buffer;
}
// Bắt đầu việc nén HTML
function start_buffering() {
ob_start("minify_html");
}
// Kết thúc việc nén HTML và trả về kết quả
function end_buffering() {
ob_end_flush();
}
// Sử dụng các hàm trên trong WordPress để nén HTML
add_action('wp_head', 'start_buffering', 1);
add_action('wp_footer', 'end_buffering', 9999);
// Mã hóa URL bằng base64
function encode_url($url) {
return base64_encode($url);
}
// Kiểm tra nếu URL là của cùng một miền (tránh mã hóa các liên kết ngoài)
function is_internal_link($url) {
$home_url = home_url(); // Lấy URL gốc của trang web
return strpos($url, $home_url) === 0; // Kiểm tra nếu URL bắt đầu với home_url() - tức là liên kết nội bộ
}
// Mã hóa các liên kết trong nội dung bài viết (không mã hóa JS/CSS/ liên kết ngoài)
function encrypt_links_in_content($content) {
// Tìm tất cả các liên kết href, src, và url() trong CSS
$patterns = array(
'/href=["\'](https?:\/\/[^\s"\'<>]+)["\']/', // Mã hóa các liên kết href
'/src=["\'](https?:\/\/[^\s"\'<>]+)["\']/', // Mã hóa các đường dẫn src (ví dụ: ảnh, js, css)
'/url\(["\'](https?:\/\/[^\s"\'<>]+)["\']\)/', // Mã hóa các đường dẫn trong CSS (chẳng hạn background-image)
);
foreach ($patterns as $pattern) {
preg_match_all($pattern, $content, $matches);
if (!empty($matches[1])) {
foreach ($matches[1] as $link) {
// Chỉ mã hóa các liên kết nội bộ, tránh mã hóa liên kết ngoài như YouTube, ảnh từ các trang khác
if (is_internal_link($link) && !preg_match('/\.(css|js)$/i', $link)) {
$encoded_link = encode_url($link); // Mã hóa liên kết
$content = str_replace($link, $encoded_link, $content); // Thay thế bằng liên kết đã mã hóa
}
}
}
}
return $content;
}
// Áp dụng mã hóa cho nội dung bài viết, tiêu đề và các widget
add_filter('the_content', 'encrypt_links_in_content');
add_filter('the_title', 'encrypt_links_in_content');
add_filter('widget_text', 'encrypt_links_in_content');
// Giải mã URL và chuyển hướng người dùng khi họ nhấp vào liên kết mã hóa
function decode_and_redirect() {
if (isset($_GET['encoded_url'])) {
$encoded_url = $_GET['encoded_url'];
$decoded_url = base64_decode($encoded_url);
// Kiểm tra URL hợp lệ trước khi chuyển hướng
if (filter_var($decoded_url, FILTER_VALIDATE_URL)) {
wp_redirect($decoded_url); // Chuyển hướng đến URL đã giải mã
exit;
}
}
}
// Thực hiện giải mã và chuyển hướng khi người dùng nhấp vào liên kết mã hóa
add_action('template_redirect', 'decode_and_redirect');