Automatické vymazanie príloh pri zmazaní príspevku

WordPress umožňuje veľmi jednoducho priradiť rôzne súbory k pridaným príspevkom ako ich prílohy. Avšak príloha ostane v systéme aj v tom prípade, že daný príspevok zmažeme. Toto je logické správanie sa, ale nie vždy nám musí vyhovovať.

Ak si želáte, aby sa pri mazaní príspevku zmazali aj všetky prílohy, ktoré sú k nemu priradené, tak stačí keď použijete nasledujúci kód. Napríklad v súbore functions.php Vašej témy.

function delete_all_files($post_id) {
	$children = get_children('post_type=attachment&post_parent=' . $post_id);
	if(empty($children))
		return;
	foreach($children as $attachment) {
		wp_delete_attachment($attachment->ID, true);
	}
}
add_action('delete_post', 'delete_all_files');

Uvedený kód maže všetky prílohy pre všetky zadefinované typy obsahu. Avšak dá sa jednoducho modifikovať, aby mazal len prílohy keď mažeme napríklad príspevok z galérie (vlastný typ obsahu galeria).

function delete_all_files($post_id) {
	// ak sa nejedné o príspevok typu galeria, tak nevykonáme nič
	if( 'galeria' != get_post_type())
		return;

	// ináč nájdeme všetky prílohy priradené k príspevku
	$children = get_children('post_type=attachment&post_parent=' . $post_id);
	if(empty($children))
		return;
	// a vymažeme ich
	foreach($children as $attachment) {
		wp_delete_attachment($attachment->ID, true);
	}
}
add_action('delete_post', 'delete_all_files');

Posted

in

by

Comments

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *