我正在使用wp\\u delete\\u post功能删除前端显示的选定帖子(在我的主题页面中)。正在成功删除帖子。
// delete all selected posts
foreach( $_POST[\'list_id\'] as $listID ) {
if( wp_delete_post( $listID ) ) {
echo \'hi\';
}
}
在我的功能中。php文件我为delete\\u帖子添加了以下钩子。
// Delete Post Attachment
function abc_delete_attachment($post_id) {
$args = array( \'post_type\' => \'attachment\', \'numberposts\' => -1, \'post_status\' => null,
\'post_parent\' => $post_id );
$attachments = get_posts($args);
if ($attachments) {
foreach ( $attachments as $attachment ) {
if( wp_delete_attachment( $attachment->ID,true ) ) {
// Just to check if the hook is called or not i used wp_redirect
wp_redirect(site_url());
}
}
}
}
add_action(\'delete_post\',\'abc_delete_attachment\');
但出于某种原因,没有调用此操作。并且附件不会被永久删除,而是保持未附加状态(默认行为)。
有人能帮我吗?
最合适的回答,由SO网友:Hameedullah Khan 整理而成
您需要使用before_delete_post
行动因为已经很晚了delete_post
操作已运行。Wordpress在运行前卸载所有附件delete_post
行动所以当你跑步的时候get_posts
在您的delete_attachment
函数未找到任何附件。
因此,您需要将函数挂接到before_delete_post
.
add_action(\'before_delete_post\',\'abc_delete_attachment\');