Wp delete attachment (PHP-API)
Naar navigatie springen
Naar zoeken springen
Vermoedelijk is dit de standaard-routine om attachments te verwijderen. De officiële documentatie [1] is mij niet helemaal duidelijk:
When an attachment is permanently deleted, the file will also be removed. Deletion removes all post meta fields, taxonomy, comments, etc. associated with the attachment (except the main post). The attachment is moved to the Trash instead of permanently deleted unless Trash for media is disabled, item is already in the Trash, or $force_delete is true.
Wat ik dankzij de voorbeelden/tests hieronder heb achterhaald:
- Dit commando heeft niets met WooCommerce-producten te maken. Het opereert uitsluitend op attachments (afbeeldingen in mijn geval). De acties van dit commando hebben daarom ook niets met WooCommerce-producten te maken
- Wat dit commando doet: Alsof je zelf in de media-bibliotheek bestanden verwijderd (en die tevens op een nette manier verwijderd van de posts of objecten waarmee deze zijn geassocieerd)
- Als je
$force_delete = True
meegeeft, worden de bestanden verwijderd. Anders blijven ze behouden - Ik weet niet wat er bedoeld wordt met de uitleg (except the main post)
Voorbeeld (1)
Voor een bestaand product gebruik ik wp_attachment_delete
om de bijbehorende thumbnail-afbeelding weg te toveren.
Oude situatie
Code
<?php # # Test wp_delete_attachment() ################################################################################ # $site_path = "/var/www/knl.s1"; require_once($site_path . "/wp-load.php"); wp_delete_attachment(39019);
Nieuwe situatie
Voorbeeld (2)
- Nu zowel de thumbnail- als gallerij-afbeelding van een product verwijderen
- Direct verwijderen - Zonder prullenpak.
Oude situatie
Code om de afbeeling-ID's te achterhalen:
use knl_s1; select wp_posts.ID as product_id, wp_posts.post_title as product_title, wp_postmeta.* from wp_postmeta join wp_posts on wp_postmeta.post_id = wp_posts.ID where wp_posts.post_type like 'product' and wp_posts.post_title like "%27919%" and ( wp_postmeta.meta_key like '_thumbnail_id' or wp_postmeta.meta_key like '_product_image_gallery' )
Code
<?php # # Test wp_delete_attachment() ################################################################################ # # * Both thumbnail & gallery images # * Sidepass trash # * Image file: http://knl.s1/wp-content/uploads/2020/09/4956_logo_01.jpg # * First gallery file: http://knl.s1/wp-content/uploads/2020/09/4956_logo_02.jpg # $site_path = "/var/www/knl.s1"; require_once($site_path . "/wp-load.php"); wp_delete_attachment(54858, True); wp_delete_attachment(54859, True); wp_delete_attachment(54860, True); wp_delete_attachment(54861, True);