ADD_ACTION未将‘DELETE_POST’操作与wp_DELETE_POST一起使用

时间:2011-09-19 作者:booota

我正在使用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\');
但出于某种原因,没有调用此操作。并且附件不会被永久删除,而是保持未附加状态(默认行为)。

有人能帮我吗?

1 个回复
最合适的回答,由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\');

结束

相关推荐

Pagination for query_posts();

我知道有很多像这样的问题,我也读过,但我还是不能让它工作。。。我有这个问题:query_posts(array(\'cat\'=>3,\'posts_per_page\'=>5)); 我只需在中显示以下内容while (have_posts()) : the_post(); 循环如何向此添加分页?我正在尝试添加posts_nav_link(); (我不知道调用我想要的功能是否正确)和显示的链接将我带到http://mysite.com/page/2. 由于它是我的索引页,所以可以不在