Chào các bạn, nếu bạn không muốn phân tích URL ảnh đại diện và lưu ảnh đại diện khi Thu thập lại thì dưới đây là code dành cho bạn. Ở trường hợp này, chúng ta sử dụng các hooks như sau:

/**
 * Không xóa ảnh đại diện khi thu thập lại bài viết.
 * Thực hiện 4 việc sau:
 * - Không xóa ảnh đại diện.
 * - Không xóa tệp đính kèm là ảnh đại diện.
 * - Không chuẩn bị dữ liệu ảnh đại diện.
 * - Giữ lại đính kèm cho ảnh đại diện.
 */

// 1. Không xóa ảnh đại diện khi thu thập lại.
add_filter('kdn/post/allow_delete_thumbnail', 'kdn_post_allow_delete_thumbnail', 10, 11);
function kdn_post_allow_delete_thumbnail($allowRun, $data, $postData, $postBot, $postSaver, $siteId, $postUrl, $urlTuple, $isRecrawl, $postId, $isFirstPage) {
	
	// Nếu đang thu thập lại, không xóa ảnh đại diện.
	if ($isRecrawl) return false;
	
}

// 2. Không xóa tệp đính kèm là ảnh đại diện khi thu thập lại.
add_filter('kdn/post/allow_delete_attached_media', 'kdn_post_allow_delete_attached_media', 10, 13);
function kdn_post_allow_delete_attached_media($allowDeleteAttachedMedia, $mediaPost, $alreadyAttachedMedia, $data, $postData, $postBot, $postSaver, $siteId, $postUrl, $urlTuple, $isRecrawl, $postId, $isFirstPage) {
	
	// Lấy ID của tệp đính kèm.
	$attachedMediaId = $mediaPost->ID;
	
	// Lấy ID của ảnh đại diện hiện tại.
	$postThumbnailId = get_post_thumbnail_id($postId);
	
	// Nếu ID của tệp đính kèm chính là ID của ảnh đại diện hiện tại, không xóa tệp đính kèm.
	if ($attachedMediaId == $postThumbnailId) {
		return false;
		
	// Nếu không, tiếp tục xóa tệp đính kèm.
	} else {
		return true;
	}
	
}

// 3. Không chuẩn bị dữ liệu ảnh đại diện cho bài viết khi thu thập lại.
add_filter('kdn/post/allow_prepare_thumbnail', 'kdn_post_allow_prepare_thumbnail', 10, 5);
function kdn_post_allow_prepare_thumbnail($allowRun, $postData, $postBot, $proxyList, $postMediaPreparer) {
	
	// Nếu đang thu thập lại, không chuẩn bị dữ liệu cho ảnh đại diện.
	if ($postBot->isRecrawl()) {
		return false;
		
	// Nếu không, tiếp tục chuẩn bị dữ liệu cho ảnh đại diện.
	} else {
		return true;
	}
	
}

// 4. Giữ lại đính kèm cho ảnh đại diện của bài viết khi thu thập lại.
add_filter('kdn/post/thumbnail_data_before_set', 'kdn_post_thumbnail_data_before_set', 10, 11);
function kdn_post_thumbnail_data_before_set($mediaFile, $data, $postData, $postBot, $postSaver, $siteId, $postUrl, $urlTuple, $isRecrawl, $postId, $isFirstPage) {
	
	// Nếu đang thu thập lại, giữ lại đính kèm cho ảnh đại diện.
	if ($isRecrawl) {
		return null;
		
	// Nếu không, tiếp tục xử lý.
	} else {
		return $mediaFile;
	}
	
}

0 Bình luận

Trả lời

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 *

Chat Qua Fanpage