Chúng tôi có thể giúp gì?
Categories
< Tất cả chủ đề

Không phân tích và lưu ảnh đại diện khi thu thập lại

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;
	}
	
}
Liên hệ