Code tự động lưu ảnh vào hot khi copy hình từ trang khác

Code tự động lưu ảnh vào hot khi copy hình từ trang khác. Tính năng này giúp tự động lưu các hình ảnh mà bạn…

auto copy file anh ve hot 1

Code tự động lưu ảnh vào hot khi copy hình từ trang khác. Tính năng này giúp tự động lưu các hình ảnh mà bạn đã sao chép từ trang web khác vào thư mục hot trên máy tính của bạn.

Khi bạn sao chép một hình ảnh từ trang web, mã sẽ tự động nhận biết việc sao chép hình ảnh và lưu nó vào thư mục hot mà bạn đã chỉ định trước đó. Điều này giúp bạn dễ dàng tổ chức và truy cập nhanh chóng đến các hình ảnh mà bạn đã sao chép từ trang web mà không cần phải lưu chúng thủ công.

Bạn cũng có thể tim thấy nhiều nội dung trong code hay hoặc code worpress của chúng tôi

Code tự động lưu ảnh vào hot khi copy hình từ trang khác

Đoạn code này có chức năng.

  • 1 như tiêu đề là nó có thể tự động lưu hình ảnh vào hot của chúng ta khi chúng ta copy ảnh từ 1 trang khác.
  • Tự động đổi tên file theo đúng chuẩn Seo khi lưu về hot của mình

VD: khi copy tên file của bên khác nó có thể là abcxyz.webp đổi thành tiêu đề của bài viết: tieu-de-bai-viet-xxx.webp

Trong đó xxx là dãy số nhảy để không bị trùng lặp

Kinh nghiệm: Để code tự động lưu ảnh làm việc hiệu quả. Các bạn nên đặt tiêu đề cho bài viết trước sau đó mới copy hình ảnh và nội dung về. Lúc này code nó sẽ tự động đổi tên file theo tiêu đề của chúng ta nó sẽ tốt hơn cho Seo

Lưu ý: code này được sử dụng để thực hiện trên nền tảng website PHP hay wordpress

Các bước chèn code tự động lưu ảnh vào hot thực thiện như sau.

Bước 1: Đăng nhập tài khoản

Bạn cần phải đăng nhập tài khoản có quyền quản trị viên mới có thể sử dụng được

Bước 2: Copy đoạn code dưới đây

Bạn copy đoạn code dưới đây sau đó tiếp tục qua bước thứ 3 để dán code vào trong website nhé

<?php
/**
* Auto save remote images to local uploads and rewrite <img> src
* Author: congdongso.net (refined)
*/

if ( ! class_exists( 'DT_Auto_Save_Images' ) ) {
class DT_Auto_Save_Images {

public function __construct() {
// Ưu tiên thấp để chạy sau các filter khác, chỉ nhận 1 tham số
add_filter( 'content_save_pre', array( $this, 'post_save_images' ), 20, 1 );
}

public function post_save_images( $content ) {
// Chỉ chạy khi đang gõ trong admin và thực sự là sự kiện lưu / publish
if ( ! is_admin() ) return $content;

// Kiểm tra nút Save/Publish theo cả Classic và Gutenberg
$is_saving = ( isset($_POST['save']) || isset($_POST['publish']) || isset($_POST['action']) );
if ( ! $is_saving ) return $content;

// Bắt ảnh trong HTML
if ( ! preg_match_all( '/<img[^>]+src=["\']([^"\']+)["\'][^>]*>/i', stripslashes( $content ), $matches ) ) {
return $content;
}

// Lấy post hiện tại an toàn
$post_id = 0;
if ( ! empty( $_POST['post_ID'] ) ) {
$post_id = (int) $_POST['post_ID'];
} else {
global $post;
$post_id = $post ? (int) $post->ID : 0;
}
if ( $post_id <= 0 ) return $content;

// Thông tin tiêu đề/slug không dấu
$post = get_post( $post_id );
$post_title = $post ? wp_strip_all_tags( $post->post_title ) : 'image';
$post_slug = sanitize_title( $post_title ); // không dấu, dùng làm tên file & post_name

// Host hiện tại
$site_host = parse_url( home_url(), PHP_URL_HOST );

// Tăng time-limit vì có thể tải nhiều ảnh
@set_time_limit( 240 );

foreach ( $matches[1] as $image_url ) {
if ( empty( $image_url ) ) continue;

// Bỏ qua data URI / svg / relative
if ( strpos( $image_url, 'data:' ) === 0 ) continue;
if ( preg_match( '/\.svg(\?.*)?$/i', $image_url ) ) continue;

// Chuẩn hóa URL
$src_host = parse_url( $image_url, PHP_URL_HOST );
if ( empty( $src_host ) ) {
// Có thể là relative -> bỏ qua (ảnh nội bộ)
continue;
}

// Bỏ qua nếu đã là ảnh nội bộ
if ( strtolower( $src_host ) === strtolower( $site_host ) ) continue;

// Tải ảnh
$download = $this->download_remote_image( $image_url );
if ( is_wp_error( $download ) ) {
continue; // tải lỗi -> bỏ qua
}

// $download = array('body' => binary, 'content_type' => 'image/jpeg', 'ext' => 'jpg')
$saved = $this->save_to_uploads_as_attachment( $download, $post_id, $post_title, $post_slug );
if ( is_wp_error( $saved ) ) {
continue;
}

// Thay thế src cũ bằng URL mới
if ( ! empty( $saved['url'] ) ) {
$content = str_replace( $image_url, $saved['url'], $content );
}
}

// Tránh đệ quy filter
remove_filter( 'content_save_pre', array( $this, 'post_save_images' ), 20 );

return $content;
}

/**
* Tải ảnh từ xa bằng wp_remote_get, trả về mảng: body, content_type, ext
*/
private function download_remote_image( $url ) {
$resp = wp_remote_get( $url, array(
'timeout' => 20,
'redirection' => 3,
'sslverify' => false,
'headers' => array(
'User-Agent' => 'Mozilla/5.0 (WordPress; AutoSaveImages)'
),
) );

if ( is_wp_error( $resp ) ) return $resp;

$code = wp_remote_retrieve_response_code( $resp );
if ( $code < 200 || $code >= 300 ) {
return new WP_Error( 'http_error', 'HTTP ' . $code );
}

$body = wp_remote_retrieve_body( $resp );
if ( empty( $body ) ) {
return new WP_Error( 'empty_body', 'Empty body' );
}

$ctype = wp_remote_retrieve_header( $resp, 'content-type' );
// Suy đoán ext
$ext = '';
if ( $ctype ) {
if ( strpos( $ctype, 'jpeg' ) !== false ) $ext = 'jpg';
elseif ( strpos( $ctype, 'png' ) !== false ) $ext = 'png';
elseif ( strpos( $ctype, 'gif' ) !== false ) $ext = 'gif';
elseif ( strpos( $ctype, 'webp' ) !== false ) $ext = 'webp';
}
if ( ! $ext ) {
// fallback từ URL
$path = parse_url( $url, PHP_URL_PATH );
$ext = pathinfo( $path, PATHINFO_EXTENSION );
$ext = strtolower( preg_replace( '/[^a-z0-9]/i', '', $ext ) );
if ( ! in_array( $ext, array( 'jpg', 'jpeg', 'png', 'gif', 'webp' ), true ) ) {
$ext = 'jpg';
}
if ( $ext === 'jpeg' ) $ext = 'jpg';
}

return array(
'body' => $body,
'content_type' => $ctype ?: 'image/' . $ext,
'ext' => $ext,
);
}

/**
* Lưu vào uploads, cố gắng chuyển sang webp nếu khả dụng, tạo attachment và metadata.
* Trả về array('file' => abs_path, 'url' => url)
*/
private function save_to_uploads_as_attachment( $download, $post_id, $post_title, $post_slug ) {
$uploads = wp_upload_dir();
if ( ! empty( $uploads['error'] ) ) {
return new WP_Error( 'upload_dir_error', $uploads['error'] );
}

// Tạo tên file theo tiêu đề không dấu
$base_name = $post_slug;
if ( ! $base_name ) $base_name = 'image';

// Lưu tạm file gốc để Image Editor xử lý
$tmp_name = wp_unique_filename( $uploads['path'], $base_name . '.' . $download['ext'] );
$tmp_path = trailingslashit( $uploads['path'] ) . $tmp_name;

// Ghi file gốc
if ( ! file_put_contents( $tmp_path, $download['body'] ) ) {
return new WP_Error( 'write_failed', 'Cannot write file' );
}

$final_path = $tmp_path;
$final_url = trailingslashit( $uploads['url'] ) . basename( $final_path );
$final_mime = wp_check_filetype( $final_path )['type'];

// Cố gắng convert sang webp nếu có editor hỗ trợ
$can_webp = function_exists( 'imagewebp' ) || ( class_exists('Imagick') && in_array('WEBP', array_map('strtoupper', Imagick::queryFormats())) );
if ( $can_webp ) {
$editor = wp_get_image_editor( $tmp_path );
if ( ! is_wp_error( $editor ) ) {
$new_name = wp_unique_filename( $uploads['path'], $base_name . '.webp' );
$webp_path = trailingslashit( $uploads['path'] ) . $new_name;

// Lưu ra webp (chất lượng 82 mặc định WP)
$saved = $editor->save( $webp_path, 'image/webp' );
if ( ! is_wp_error( $saved ) && ! empty( $saved['path'] ) ) {
// Xoá file gốc nếu muốn tiết kiệm dung lượng
@unlink( $tmp_path );

$final_path = $saved['path'];
$final_url = trailingslashit( $uploads['url'] ) . basename( $final_path );
$final_mime = 'image/webp';
}
}
}

// Tạo attachment
$filetype = wp_check_filetype( $final_path );
$attach = array(
'guid' => $final_url,
'post_mime_type' => $filetype['type'],
'post_title' => $post_title, // Title theo tiêu đề bài viết
'post_excerpt' => $post_title, // Caption
'post_content' => $post_title, // Description
'post_status' => 'inherit',
'post_name' => $post_slug, // slug (không dấu)
);

$attach_id = wp_insert_attachment( $attach, $final_path, $post_id );
if ( is_wp_error( $attach_id ) || ! $attach_id ) {
return new WP_Error( 'attachment_failed', 'Cannot insert attachment' );
}

// Alt text
update_post_meta( $attach_id, '_wp_attachment_image_alt', $post_title );

// Metadata (sizes…)
require_once ABSPATH . 'wp-admin/includes/image.php';
$meta = wp_generate_attachment_metadata( $attach_id, $final_path );
wp_update_attachment_metadata( $attach_id, $meta );

return array(
'file' => $final_path,
'url' => $final_url,
'id' => $attach_id,
);
}
}
new DT_Auto_Save_Images();
}

Bước 3: Truy cập đường dẫn để dán code

Sau khi bạn đã đăng nhập và copy code bạn truy cập theo đường dẫn dưới đây để dán code vào website của mình

Bạn tìm đến Giao diện > Theme file editor > nhìn sang bên trái các bạn tìm đến mục Function.php. 

Code tự động lưu ảnh vào hotPin
Đường dẫn dán code

1 số web của các bạn có thể không tìm thấy có thể là sử dụng theme child hoặc theme chưa tạo mục này thì các bạn chuyển qua theme cha nhé

Code tự động lưu ảnh vào hotPin
Chuyển đổi theme để hiển thị Function.php

Bước 4: Kiêm tra kết quả

Để kiểm tra được Code tự động lưu ảnh vào hot khi copy hình từ trang khác đã hoạt động hay chưa các bạn làm như sau:

Tạo 1 bài viết với tiêu đề mình chọn > Copy hình ảnh và nội dung từ trang khác khác về bài viết này. Lúc này bạn kiểm tra thì vẫn thấy link là của bên kia. Các bạn tiến hành Lưu nháp website nó tự đông load lại. Lúc này bạn chỉ cần kiểm tra lại kết quả thôi nhé.

Tổng kết.

Vừa rồi mình vừa chia sẻ cho các bạn đoạn Code tự động lưu ảnh vào hot khi copy hình từ trang khác. Đồng thời hướng dẫn chi tiết cách đưa vào để sử dụng đoạn code đó. Hi vọng bài viết này sẽ thực sự hữu ích với các bạn.

Nếu các bạn thấy hữu ích đừng quên đánh giá 5* follow kênh Facebook của chúng tôi để được cập nhật nhiều tin tức mới nhất nhé.

Nguồn sưu tầm

Tác giả
Đàm Thìn
Tốc độ vào bảo mật của website luôn là điều cần thiết. Là chuyên gia trong lĩnh vực tôi luôn hiểu rằng tốc độ và bảo mật là chìa khóa để dẫn đến thành công.

Bài viết liên quan

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đặc biệt

Ra mắt cộng đồng MỚI

Nhiều tính năng, thư viện miễn phí mới đang chờ phía trước.
Đồng ý
Your Mastodon Instance