Loading...
12
20

Πως μπορώ να σβήσω τις φωτογραφίες μόλις σβήνω ένα άρθρο;

07/06/2021
3 λεπτά

Στις περισσότερες περιπτώσεις θέλουμε μόλις σβήνουμε ένα άρθρο (ή ένα προϊόν ή γενικότερα οποιοδήποτε custom post type) να σβήνεται αυτόματα και η χαρακτηριστική εικόνα (featured image) του άρθρου. By default, δυστυχώς, το WordPress την αφήνει να υπάρχει για πάντα μέσα στα πολυμέσα. Αυτό φυσικά γεμίζει τον δίσκο του hosting μας με αχρείαστα αρχεία. Σε ένα απλό σάιτ αυτό ίσως δεν είναι πρόβλημα όμως σε μία ιστοσελίδα με πολλές χιλιάδες άρθρα αυτό μπορεί να έχει σοβαρές επιπτώσεις στην ταχύτητα αφού εκτός απο φυσικό χώρο στο δίσκο, για κάθε αρχείο που ανεβαίνει στο WordPress δημιουργούνται και αντίστοιχες εγγραφές στη βάση.

Ο παρακάτω κώδικας κάνει ακριβώς αυτό που αναφέραμε με χρήστη του hook before_delete_post

add_action( 'before_delete_post', function($post_id)
 {
     if(has_post_thumbnail( $post_id ))
     {
           $attachment_id = get_post_thumbnail_id( $post_id );
           wp_delete_attachment($attachment_id, true);
     }
 }, 10 );

Στο hook μέσα μπορούμε να κάνουμε οποιδήποτε έλεγχο θέλουμε. Πχ για να σβήσουμε τη φωτογραφία όταν σβήνουμε προϊόν στο WooCommerce μπορούμε να το κάνουμε με τον παρακάτω κώδικα

add_action('before_delete_post', function ($post_id)
{
    if ( 'product' != get_post_type($post_id) )
    {
        return;
    }

    $product = wc_get_product($post_id);
    $feat_image_id = $product->get_image_id();
    $gallery_images_ids = $product->get_gallery_image_ids();

    if( !empty($feat_image_id) )
    {
        wp_delete_attachment($feat_image_id, true);
    }
    
    if( !empty($gallery_images_ids) )
    {
        foreach ( $gallery_images_ids as $image_id )
        {
            wp_delete_attachment($image_id, true);
        }
    }
}, 10, 1);

Προσοχή

Σε κάθε περίπτωση η φωτογραφία θα σβηστεί όταν σβήσουμε το άρθρο (ή προϊόν) και από τον κάδο ανακύκλωσης.

Θέλετε να σχολιάσετε;

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

83 Pixel. creative studio
Get Quote - EL