diff --git a/admin/class-purger.php b/admin/class-purger.php index 502a860..e120ba3 100644 --- a/admin/class-purger.php +++ b/admin/class-purger.php @@ -69,6 +69,58 @@ public function purge_post_on_comment( $comment_id, $comment ) { } + /** + * Purge cache when a post is being deleted (including force delete). + * + * @global object $nginx_helper_admin Nginx helper admin object. + * @global string $blog_id Blog id. + * + * @param int $post_id Post ID. + * @param WP_Post $post Post object. + * + * @return bool|void + */ + public function purge_on_before_delete_post( $post_id, $post ) { + + global $nginx_helper_admin, $blog_id; + + if ( ! $nginx_helper_admin->options['enable_purge'] ) { + return; + } + + // Check if the post is not already in trash (force delete case). + if ( 'trash' !== $post->post_status && 'publish' === $post->post_status ) { + + $exclude_post_types = apply_filters( 'rt_nginx_helper_exclude_post_types', array( 'nav_menu_item', 'revision' ) ); + + if ( in_array( $post->post_type, $exclude_post_types, true ) ) { + return; + } + + $this->log( '# # # # #' ); + $this->log( "# Post '$post->post_title' ( id " . $post->ID . ' ) force deleted.' ); + $this->log( '# # # # #' ); + $this->log( 'Function purge_on_before_delete_post ( post id ' . $post->ID . ' ) BEGIN ===' ); + + if ( 1 === (int) $nginx_helper_admin->options['purge_homepage_on_del'] ) { + $this->_purge_homepage(); + } + + $this->_purge_by_options( + $post->ID, + $blog_id, + true, + $nginx_helper_admin->options['purge_archive_on_del'], + $nginx_helper_admin->options['purge_archive_on_del'] + ); + + $this->log( 'Function purge_on_before_delete_post ( post id ' . $post->ID . ' ) END ===' ); + } + + return true; + + } + /** * Purge post cache on comment change. * diff --git a/includes/class-nginx-helper.php b/includes/class-nginx-helper.php index 085e7a2..e732980 100644 --- a/includes/class-nginx-helper.php +++ b/includes/class-nginx-helper.php @@ -233,6 +233,7 @@ private function define_admin_hooks() { $this->loader->add_action( 'edit_attachment', $nginx_purger, 'purge_image_on_edit', 100, 1 ); $this->loader->add_action( 'wpmu_new_blog', $nginx_helper_admin, 'update_new_blog_options', 10, 1 ); $this->loader->add_action( 'transition_post_status', $nginx_purger, 'purge_on_post_moved_to_trash', 20, 3 ); + $this->loader->add_action( 'before_delete_post', $nginx_purger, 'purge_on_before_delete_post', 20, 2 ); $this->loader->add_action( 'edit_term', $nginx_purger, 'purge_on_term_taxonomy_edited', 20, 3 ); $this->loader->add_action( 'delete_term', $nginx_purger, 'purge_on_term_taxonomy_edited', 20, 3 ); $this->loader->add_action( 'check_ajax_referer', $nginx_purger, 'purge_on_check_ajax_referer', 20 );