{"id":8825,"date":"2025-04-10T09:37:10","date_gmt":"2025-04-10T00:37:10","guid":{"rendered":"https:\/\/cooss.net\/cach-tu-dong-xoa-hinh-anh-bai-viet-vi\/"},"modified":"2025-04-10T10:41:19","modified_gmt":"2025-04-10T01:41:19","slug":"cach-tu-dong-xoa-hinh-anh-bai-viet-vi","status":"publish","type":"post","link":"https:\/\/cooss.net\/vi\/cach-tu-dong-xoa-hinh-anh-bai-viet-vi\/","title":{"rendered":"C\u00e1ch T\u1ef1 \u0111\u1ed9ng x\u00f3a h\u00ecnh \u1ea3nh b\u00e0i vi\u1ebft"},"content":{"rendered":"\n<p>\u0110a s\u1ed1 khi vi\u1ebft b\u00e0i tr\u00ean WordPress, ch\u00fang ta c\u0169ng \u0111\u00ednh k\u00e8m h\u00ecnh \u1ea3nh. Tuy nhi\u00ean, \u0111\u00f4i khi khi x\u00f3a b\u00e0i vi\u1ebft, h\u00ecnh \u1ea3nh v\u1eabn c\u00f2n t\u1ed3n t\u1ea1i. H\u00f4m nay, ch\u00fang ta s\u1ebd \u0111i s\u00e2u v\u00e0o ch\u1ee7 \u0111\u1ec1 &#8220;T\u1ef1 \u0111\u1ed9ng x\u00f3a h\u00ecnh \u1ea3nh b\u00e0i vi\u1ebft&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">L\u00fd do h\u00ecnh \u1ea3nh kh\u00f4ng b\u1ecb x\u00f3a khi b\u00e0i vi\u1ebft b\u1ecb x\u00f3a<\/h2>\n\n\n\n<p>M\u1eb7c d\u00f9 \u0111\u00e3 x\u00f3a b\u00e0i vi\u1ebft, nh\u01b0ng h\u00ecnh \u1ea3nh v\u1eabn c\u00f2n t\u1ed3n t\u1ea1i v\u00ec h\u00ecnh \u1ea3nh v\u00e0 b\u00e0i vi\u1ebft \u0111\u01b0\u1ee3c x\u1eed l\u00fd kh\u00e1c nhau trong c\u01a1 s\u1edf d\u1eef li\u1ec7u. Khi x\u00f3a b\u00e0i vi\u1ebft, WordPress s\u1ebd x\u00f3a th\u00f4ng tin meta v\u00e0 n\u1ed9i dung c\u1ee7a b\u00e0i vi\u1ebft \u0111\u00f3, nh\u01b0ng h\u00ecnh \u1ea3nh li\u00ean k\u1ebft v\u1edbi n\u00f3 l\u1ea1i \u0111\u01b0\u1ee3c coi l\u00e0 t\u1ec7p \u0111\u00ednh k\u00e8m \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd ri\u00eang bi\u1ec7t. Do \u0111\u00f3, v\u1ec1 c\u01a1 b\u1ea3n, h\u00ecnh \u1ea3nh s\u1ebd v\u1eabn t\u1ed3n t\u1ea1i.<\/p>\n\n\n\n<p>V\u1ea5n \u0111\u1ec1 x\u1ea3y ra khi h\u00ecnh \u1ea3nh li\u00ean quan \u0111\u1ebfn b\u00e0i vi\u1ebft v\u1eabn c\u00f2n t\u1ed3n t\u1ea1i, g\u00e2y l\u00e3ng ph\u00ed kh\u00f4ng gian l\u01b0u tr\u1eef v\u00e0 c\u00f3 th\u1ec3 l\u00e0m gi\u1ea3m t\u1ed1c \u0111\u1ed9 c\u1ee7a trang web.<\/p>\n\n\n\n<p>Vi\u1ec7c x\u00f3a h\u00ecnh \u1ea3nh kh\u00f4ng c\u1ea7n thi\u1ebft t\u1eeb Th\u01b0 vi\u1ec7n H\u00ecnh \u1ea3nh (Media Library) m\u1ed7i l\u1ea7n l\u00e0 r\u1ea5t phi\u1ec1n ph\u1ee9c, v\u00e0 khi s\u1ed1 l\u01b0\u1ee3ng b\u00e0i vi\u1ebft t\u0103ng l\u00ean, vi\u1ec7c qu\u1ea3n l\u00fd tr\u1edf n\u00ean kh\u00f3 kh\u0103n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Gi\u1edbi thi\u1ec7u h\u00e0m \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng x\u00f3a h\u00ecnh \u1ea3nh b\u00e0i vi\u1ebft<\/h2>\n\n\n\n<p>D\u01b0\u1edbi \u0111\u00e2y l\u00e0 m\u00e3 h\u00e0m \u0111\u1ec3 x\u00f3a t\u1ea5t c\u1ea3 h\u00ecnh \u1ea3nh li\u00ean k\u1ebft khi x\u00f3a b\u00e0i vi\u1ebft.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function delete_images_with_post( $post_id ) {\n    \/\/ B\u1ecf qua phi\u00ean b\u1ea3n\n    if ( wp_is_post_revision( $post_id ) ) {\n        return;\n    }\n    \/\/ X\u00f3a h\u00ecnh \u1ea3nh \u0111\u1ea1i di\u1ec7n\n    $thumbnail_id = get_post_thumbnail_id( $post_id );\n    if ( $thumbnail_id ) {\n        wp_delete_attachment( $thumbnail_id, true );\n    }\n    \/\/ X\u00f3a t\u1ea5t c\u1ea3 h\u00ecnh \u1ea3nh \u0111\u00ednh k\u00e8m trong n\u1ed9i dung\n    $attachments = get_attached_media( 'image', $post_id );\n    if ( $attachments ) {\n        foreach ( $attachments as $attachment ) {\n            wp_delete_attachment( $attachment-&gt;ID, true );\n        }\n    }\n}\nadd_action( 'before_delete_post', 'delete_images_with_post' );\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00e1ch ho\u1ea1t \u0111\u1ed9ng c\u1ee7a h\u00e0m<\/h3>\n\n\n\n<p>H\u00e0m tr\u00ean \u0111\u01b0\u1ee3c k\u1ebft n\u1ed1i v\u1edbi hook h\u00e0nh \u0111\u1ed9ng `add_action( &#8216;<strong>before_delete_post<\/strong>&#8216;, &#8216;delete_images_with_post&#8217; );`. Hook n\u00e0y s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi ngay tr\u01b0\u1edbc khi b\u00e0i vi\u1ebft b\u1ecb x\u00f3a, v\u00e0 khi \u0111\u00f3 h\u00e0m &#8216;<strong>delete_image_with_post<\/strong>&#8216; s\u1ebd \u0111\u01b0\u1ee3c g\u1ecdi \u0111\u1ec3 th\u1ef1c hi\u1ec7n vi\u1ec7c t\u00ecm v\u00e0 x\u00f3a h\u00ecnh \u1ea3nh li\u00ean k\u1ebft v\u1edbi b\u00e0i vi\u1ebft.<\/p>\n\n\n\n<p>1. **B\u1ecf qua phi\u00ean b\u1ea3n**: H\u00e0m \u0111\u1ea7u ti\u00ean ki\u1ec3m tra xem b\u00e0i vi\u1ebft b\u1ecb x\u00f3a c\u00f3 ph\u1ea3i l\u00e0 phi\u00ean b\u1ea3n kh\u00f4ng. Phi\u00ean b\u1ea3n l\u00e0 phi\u00ean b\u1ea3n tr\u01b0\u1edbc \u0111\u00f3 \u0111\u01b0\u1ee3c t\u1ea1o t\u1ef1 \u0111\u1ed9ng m\u1ed7i khi b\u00e0i vi\u1ebft \u0111\u01b0\u1ee3c ch\u1ec9nh s\u1eeda, do \u0111\u00f3, th\u00f4ng qua logic kinh doanh n\u00e0y, n\u00f3 s\u1ebd b\u1ecf qua c\u00e1c phi\u00ean b\u1ea3n kh\u00f4ng c\u1ea7n thi\u1ebft.<\/p>\n\n\n\n<p>2. **X\u00f3a h\u00ecnh \u1ea3nh \u0111\u1ea1i di\u1ec7n**: \u0110\u1ec3 t\u00ecm h\u00ecnh \u1ea3nh \u0111\u1ea1i di\u1ec7n li\u00ean k\u1ebft v\u1edbi b\u00e0i vi\u1ebft, h\u00e0m `get_post_thumbnail_id` \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng. N\u1ebfu h\u00ecnh \u1ea3nh \u0111\u1ea1i di\u1ec7n t\u1ed3n t\u1ea1i, n\u00f3 s\u1ebd b\u1ecb x\u00f3a th\u00f4ng qua h\u00e0m `wp_delete_attachment`.<\/p>\n\n\n\n<p>3. **X\u00f3a t\u1ea5t c\u1ea3 h\u00ecnh \u1ea3nh trong n\u1ed9i dung**: \u0110\u1ec3 t\u00ecm t\u1ea5t c\u1ea3 h\u00ecnh \u1ea3nh \u0111\u00ednh k\u00e8m trong n\u1ed9i dung, h\u00e0m `get_attached_media` \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng. T\u1ea1i \u0111\u00e2y, lo\u1ea1i &#8216;image&#8217; \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh \u0111\u1ec3 tr\u00edch xu\u1ea5t t\u1ea5t c\u1ea3 c\u00e1c \u0111\u1ecbnh d\u1ea1ng h\u00ecnh \u1ea3nh, sau \u0111\u00f3 th\u1ef1c hi\u1ec7n v\u00f2ng l\u1eb7p \u0111\u1ec3 x\u00f3a t\u1eebng h\u00ecnh \u1ea3nh.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Gi\u1edbi thi\u1ec7u v\u1ec1 hook h\u00e0nh \u0111\u1ed9ng v\u00e0 c\u00e1c hook li\u00ean quan<\/h2>\n\n\n\n<p>Hook h\u00e0nh \u0111\u1ed9ng `<strong>before_delete_post<\/strong>` \u0111\u01b0\u1ee3c th\u1ef1c thi ngay tr\u01b0\u1edbc khi b\u00e0i vi\u1ebft b\u1ecb x\u00f3a. Khi hook n\u00e0y ho\u1ea1t \u0111\u1ed9ng, b\u1ea1n c\u00f3 th\u1ec3 \u0111\u1ecbnh ngh\u0129a ch\u1ee9c n\u0103ng m\u00e0 b\u1ea1n mu\u1ed1n th\u1ef1c hi\u1ec7n d\u01b0\u1edbi d\u1ea1ng h\u00e0m v\u00e0 g\u1ecdi n\u00f3, t\u1eeb \u0111\u00f3 th\u00eam c\u00e1c ch\u1ee9c n\u0103ng c\u1ea7n thi\u1ebft v\u00e0o WordPress. Nhi\u1ec1u plugin n\u00e2ng cao ch\u1ee9c n\u0103ng c\u1ee7a WordPress c\u0169ng s\u1eed d\u1ee5ng c\u00e1c &#8216;<strong>hook (Hook)<\/strong>&#8216; n\u00e0y \u0111\u1ec3 tri\u1ec3n khai ch\u1ee9c n\u0103ng.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">C\u00e1c hook h\u00e0nh \u0111\u1ed9ng t\u01b0\u01a1ng t\u1ef1<\/h3>\n\n\n\n<p>1. **after_delete_post**: Hook n\u00e0y \u0111\u01b0\u1ee3c th\u1ef1c thi sau khi b\u00e0i vi\u1ebft b\u1ecb x\u00f3a. N\u00f3 h\u1eefu \u00edch khi c\u1ea7n theo d\u00f5i ho\u1eb7c ghi l\u1ea1i th\u00f4ng tin x\u1eed l\u00fd sau \u0111\u00f3.<\/p>\n\n\n\n<p>2. **delete_attachment**: Hook n\u00e0y x\u1ea3y ra khi m\u1ed9t t\u1ec7p \u0111\u00ednh k\u00e8m b\u1ecb x\u00f3a. N\u00f3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng cho ch\u1ee9c n\u0103ng x\u00f3a h\u00ecnh \u1ea3nh.<\/p>\n\n\n\n<p>3. **before_delete_attachment**: Hook n\u00e0y \u0111\u01b0\u1ee3c th\u1ef1c thi tr\u01b0\u1edbc khi m\u1ed9t t\u1ec7p \u0111\u00ednh k\u00e8m b\u1ecb x\u00f3a, cho ph\u00e9p b\u1ea1n ng\u0103n ch\u1eb7n vi\u1ec7c x\u00f3a ho\u1eb7c th\u1ef1c hi\u1ec7n c\u00e1c thao t\u00e1c b\u1ed5 sung t\u00f9y theo \u0111i\u1ec1u ki\u1ec7n c\u1ee5 th\u1ec3.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 s\u1eed d\u1ee5ng?<\/h2>\n\n\n\n<p>Ch\u1ec9 c\u1ea7n th\u00eam h\u00e0m tr\u00ean v\u00e0o t\u1ec7p functions.php trong th\u01b0 m\u1ee5c ch\u1ee7 \u0111\u1ec1 c\u1ee7a b\u1ea1n. V\u1ec1 vi\u1ec7c ch\u1ec9nh s\u1eeda functions.php, vui l\u00f2ng tham kh\u1ea3o b\u00e0i vi\u1ebft d\u01b0\u1edbi \u0111\u00e2y.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-16018d1d wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/cooss.net\/%EC%9B%8C%EB%93%9C%ED%94%84%EB%A0%88%EC%8A%A4-%EC%88%8F%EC%BD%94%EB%93%9C-%EC%B6%94%EA%B0%80-%EB%B0%8F-%ED%99%9C%EC%9A%A9\">Th\u00eam v\u00e0 s\u1eed d\u1ee5ng shortcode WordPress &#8211; C\u00e1ch vi\u1ebft functions.php<\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Sau khi th\u00eam m\u00e3 tr\u00ean v\u00e0o functions.php, khi b\u1ea1n x\u00f3a b\u00e0i vi\u1ebft, t\u1ea5t c\u1ea3 h\u00ecnh \u1ea3nh c\u00f3 trong b\u00e0i vi\u1ebft c\u0169ng s\u1ebd b\u1ecb x\u00f3a. (Ch\u00fang s\u1ebd b\u1ecb x\u00f3a kh\u1ecfi c\u01a1 s\u1edf d\u1eef li\u1ec7u v\u00e0 c\u00e1c t\u1ec7p h\u00ecnh \u1ea3nh l\u01b0u tr\u1eef tr\u00ean m\u00e1y ch\u1ee7 c\u0169ng s\u1ebd b\u1ecb x\u00f3a.)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">L\u01b0u \u00fd<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kh\u00f4ng ho\u1ea1t \u0111\u1ed9ng khi &#8216;x\u00f3a&#8217; g\u1eedi v\u00e0o &#8216;th\u00f9ng r\u00e1c&#8217;. Ch\u1ec9 ho\u1ea1t \u0111\u1ed9ng khi &#8216;x\u00f3a v\u0129nh vi\u1ec5n&#8217;.<\/li>\n\n\n\n<li>N\u1ebfu h\u00ecnh \u1ea3nh gi\u1ed1ng nhau \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong c\u00e1c b\u00e0i vi\u1ebft kh\u00e1c, h\u00ecnh \u1ea3nh s\u1ebd kh\u00f4ng hi\u1ec3n th\u1ecb trong c\u00e1c b\u00e0i vi\u1ebft kh\u00e1c. N\u1ebfu b\u1ea1n s\u1eed d\u1ee5ng c\u00f9ng m\u1ed9t h\u00ecnh \u1ea3nh trong nhi\u1ec1u b\u00e0i vi\u1ebft, t\u1ed1t nh\u1ea5t n\u00ean kh\u00f4ng s\u1eed d\u1ee5ng.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">K\u1ebft lu\u1eadn<\/h2>\n\n\n\n<p>Ph\u01b0\u01a1ng ph\u00e1p t\u1ef1 \u0111\u1ed9ng x\u00f3a h\u00ecnh \u1ea3nh li\u00ean k\u1ebft v\u1edbi b\u00e0i vi\u1ebft l\u00e0 r\u1ea5t h\u1eefu \u00edch v\u00e0 gi\u00fap \u00edch l\u1edbn cho vi\u1ec7c qu\u1ea3n l\u00fd blog. Vi\u1ec7c vi\u1ebft m\u00e3 gi\u00fap t\u1ed1i \u01b0u h\u00f3a hi\u1ec7u qu\u1ea3 c\u1ee7a c\u01a1 s\u1edf d\u1eef li\u1ec7u v\u00e0 c\u1ea3i thi\u1ec7n hi\u1ec7u su\u1ea5t t\u1ed5ng th\u1ec3 c\u1ee7a trang web.<\/p>\n\n\n\n<p>V\u1ea5n \u0111\u1ec1 h\u00ecnh \u1ea3nh c\u00f2n l\u1ea1i khi x\u00f3a b\u00e0i vi\u1ebft c\u00f3 th\u1ec3 g\u00e2y phi\u1ec1n ph\u1ee9c, nh\u01b0ng v\u1edbi ph\u01b0\u01a1ng ph\u00e1p tr\u00ean, b\u1ea1n c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng gi\u1ea3i quy\u1ebft. Khi \u00e1p d\u1ee5ng th\u1ef1c t\u1ebf, h\u00e3y th\u00eam m\u00e3 tr\u00ean v\u00e0o t\u1ec7p functions.php \u0111\u1ec3 s\u1eed d\u1ee5ng m\u1ed9t c\u00e1ch c\u1ef1c k\u1ef3 \u0111\u01a1n gi\u1ea3n!<\/p>\n\n\n\n<div style=\"margin-top: 10px;margin-bottom: 30px;border-top: 1px solid #ccc\">&nbsp;<\/div>\n\n\n\n<p><b>[wp_is_post_revision] :<\/b> Ch\u1ee9c n\u0103ng ki\u1ec3m tra xem b\u00e0i vi\u1ebft c\u00f3 ph\u1ea3i l\u00e0 phi\u00ean b\u1ea3n kh\u00f4ng, n\u1ebfu l\u00e0 phi\u00ean b\u1ea3n th\u00ec s\u1ebd b\u1ecf qua m\u1ed9t s\u1ed1 thao t\u00e1c nh\u1ea5t \u0111\u1ecbnh.<br><b>[get_post_thumbnail_id] :<\/b> H\u00e0m l\u1ea5y ID h\u00ecnh \u1ea3nh \u0111\u1ea1i di\u1ec7n c\u1ee7a m\u1ed9t b\u00e0i vi\u1ebft c\u1ee5 th\u1ec3.<br><b>[wp_delete_attachment] :<\/b> H\u00e0m x\u00f3a m\u1ed9t t\u1ec7p \u0111\u00ednh k\u00e8m c\u1ee5 th\u1ec3, c\u00f3 th\u1ec3 thi\u1ebft l\u1eadp tham s\u1ed1 th\u1ee9 hai \u0111\u1ec3 x\u00e1c \u0111\u1ecbnh xem c\u00f3 x\u00f3a v\u0129nh vi\u1ec5n hay kh\u00f4ng.<br><b>[get_attached_media] :<\/b> H\u00e0m l\u1ea5y danh s\u00e1ch c\u00e1c ph\u01b0\u01a1ng ti\u1ec7n \u0111\u00ednh k\u00e8m cho m\u1ed9t b\u00e0i vi\u1ebft c\u1ee5 th\u1ec3.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0110a s\u1ed1 khi vi\u1ebft b\u00e0i tr\u00ean WordPress, ch\u00fang ta c\u0169ng \u0111\u00ednh k\u00e8m h\u00ecnh \u1ea3nh. Tuy nhi\u00ean, \u0111\u00f4i khi khi x\u00f3a b\u00e0i vi\u1ebft, h\u00ecnh \u1ea3nh v\u1eabn c\u00f2n t\u1ed3n t\u1ea1i. H\u00f4m nay, ch\u00fang ta s\u1ebd \u0111i s\u00e2u v\u00e0o ch\u1ee7 \u0111\u1ec1 &#8220;T\u1ef1 \u0111\u1ed9ng x\u00f3a h\u00ecnh \u1ea3nh b\u00e0i vi\u1ebft&#8221;. L\u00fd do h\u00ecnh \u1ea3nh kh\u00f4ng b\u1ecb x\u00f3a khi b\u00e0i vi\u1ebft [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[185],"tags":[],"class_list":["post-8825","post","type-post","status-publish","format-standard","hentry","category-shortcode-vi"],"_links":{"self":[{"href":"https:\/\/cooss.net\/vi\/wp-json\/wp\/v2\/posts\/8825","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cooss.net\/vi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cooss.net\/vi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cooss.net\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cooss.net\/vi\/wp-json\/wp\/v2\/comments?post=8825"}],"version-history":[{"count":1,"href":"https:\/\/cooss.net\/vi\/wp-json\/wp\/v2\/posts\/8825\/revisions"}],"predecessor-version":[{"id":8864,"href":"https:\/\/cooss.net\/vi\/wp-json\/wp\/v2\/posts\/8825\/revisions\/8864"}],"wp:attachment":[{"href":"https:\/\/cooss.net\/vi\/wp-json\/wp\/v2\/media?parent=8825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cooss.net\/vi\/wp-json\/wp\/v2\/categories?post=8825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cooss.net\/vi\/wp-json\/wp\/v2\/tags?post=8825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}