Delete old post with new post

时间:2013-05-15 作者:user8514

希望你能用插件或函数为我指出正确的方向。登录“联系表单7”后,用户可以使用“表单发布”插件发布其信息。一切都是前端。这是一个使用自定义字段显示帖子的大表单。我需要一种自动删除帖子的方法,所以每次用户创建新帖子时,都会删除该类别中的最后一个帖子。我找到了一种方法,我可以在日期前完成,但那是行不通的。谢谢

1 个回复
最合适的回答,由SO网友:webdwall 整理而成

如果我正确理解了这个问题,您希望每当用户添加新帖子时,他/她以前的所有帖子都应该删除。我想知道你为什么要那样做!!:)但无论如何,您可以使用此代码。

add_action(\'save_post\', \'delete_prev_posts_by_user\', 10, 2 );
function delete_prev_posts_by_user( $post_id, $post ){
    if( \'publish\' == $post->post_status ){
        $the_special_category_id = 1;//the id of the concerned category 
        $post_categories = wp_get_post_categories( $post_id );

        $user = new WP_User( $post->post_author );
        if( in_array( $the_special_category_id, $post_categories ) && \'contributor\' == $user->roles[0] ){
            $userposts = new WP_Query( array( \'author\'=>$post->post_author, \'post__not_in\'=>array( $post_id ), \'cat\'=>$the_special_category_id ) );
            if( $userposts->have_posts() ): while( $userposts->have_posts() ): $userposts->the_post();
                //set the second parameter to false, to trash it rather than deleting permanently
                wp_delete_post( get_the_ID(), true );
            endwhile;
            endif;
            wp_reset_query();
        }
    }
}
但是,您可能需要根据您的要求更改用户角色

结束

相关推荐

load more posts by category

正如你所看到的,我在每个标签中按类别加载,并在10篇帖子完成后,按我想设置的每个标签显示总共10篇帖子。我想在我已经完成的10篇文章的底部添加一个加载更多按钮,但查看者必须查看其他特定类别的文章,所以我想通过保持在同一页面中,在该选项卡中加载更多文章,按该类别显示更多文章。这是我按类别显示每个选项卡的操作(&A);按员额总数计算 <?php $rightbox = get_posts(\'&cat=8&showposts=10\'); foreach($right