: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
* @package WP_Bulk_Delete
* @subpackage Form Process
* @copyright Copyright (c) 2016, Dharmesh Patel
// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) exit;
/** Actions *************************************************************/
add_action( 'render_form_by_posttype', 'wpbd_render_form_posttype', 10 );
add_action( 'render_form_by_posttype', 'wpbd_render_common_form', 20 );
add_action( 'render_form_by_author', 'wpbd_render_form_posttype', 10 );
add_action( 'render_form_by_author', 'wpbd_render_form_users', 20 );
add_action( 'render_form_by_author', 'wpbd_render_common_form', 30 );
add_action( 'render_form_by_title', 'wpbd_render_form_posttype', 10 );
add_action( 'render_form_by_title', 'wpbd_render_form_post_contains', 20 );
add_action( 'render_form_by_title', 'wpbd_render_common_form', 30 );
add_action( 'render_form_by_taxonomy', 'wpbd_render_form_posttype_dropdown', 10 );
add_action( 'render_form_by_taxonomy', 'wpbd_render_form_taxonomy', 20 );
add_action( 'render_form_by_taxonomy', 'wpbd_render_extra_assinged_category', 30 );
add_action( 'render_form_by_taxonomy', 'wpbd_render_common_form', 40 );
add_action( 'render_form_by_custom_fields', 'wpbd_render_form_posttype', 10 );
add_action( 'render_form_by_custom_fields', 'wpbd_render_form_custom_fields', 20 );
add_action( 'render_form_by_custom_fields', 'wpbd_render_common_form', 30 );
add_action( 'render_form_general', 'wpbd_render_form_posttype_dropdown', 10 );
add_action( 'render_form_general', 'wpbd_render_form_taxonomy', 20 );
add_action( 'render_form_general', 'wpbd_render_extra_assinged_category', 20 );
add_action( 'render_form_general', 'wpbd_render_form_users', 30 );
add_action( 'render_form_general', 'wpbd_render_form_custom_fields', 40 );
add_action( 'render_form_general', 'wpbd_render_form_post_contains', 50 );
add_action( 'render_form_general', 'wpbd_render_common_form', 60 );
add_action( 'render_form_by_charector_count', 'wpdb_render_delete_users_postlinks', 10 );
add_action( 'render_form_by_charector_count', 'wpbd_render_form_post_contant_count_interval', 70 );
* Process Delete posts form
* @param array $data Form pot Data.
* @return array | posts ID to be delete.
function xt_delete_posts_form_process( $data ) {
if ( ! current_user_can( 'manage_options' ) ) {
$error[] = esc_html__('You don\'t have enough permission for this operation.', 'wp-bulk-delete' );
if ( isset( $data['_delete_all_posts_wpnonce'] ) && wp_verify_nonce( $data['_delete_all_posts_wpnonce'], 'delete_posts_nonce' ) ) {
$delete_time = ( $data['delete_time'] ) ? $data['delete_time'] : 'now';
$delete_datetime = isset( $data['delete_datetime'] ) ? $data['delete_datetime'] : '';
$custom_query = !empty( $data['with_custom_query'] ) ? $data['with_custom_query'] : '';
if( $delete_time === 'scheduled' && !empty($delete_datetime) && wpbd_is_pro() ) {
$data['delete_entity'] = 'post';
return wpbd_save_scheduled_delete($data);
// Get post_ids for delete based on user input.
$post_ids = wpbulkdelete()->api->get_delete_posts_ids( $data );
if ( ! empty( $post_ids ) && count( $post_ids ) > 0 ) {
if ( $data['delete_type'] === 'permenant' ) {
$post_count = wpbulkdelete()->api->do_delete_posts( $post_ids, $force_delete, $data, $custom_query );
'messages' => array( sprintf( esc_html__( '%d Record deleted successfully.', 'wp-bulk-delete' ), $post_count)
'messages' => array( esc_html__( 'Nothing to delete!!', 'wp-bulk-delete' ) ),
wp_die( esc_html__( 'Sorry, Your nonce did not verify.', 'wp-bulk-delete' ) );
* Render Posttype checkboxes.
function wpbd_render_form_posttype(){
$ingnore_types = array( 'attachment','revision','nav_menu_item','custom_css', 'customize_changeset', 'oembed_cache', 'user_request', 'wp_block', 'wp_template', 'wp_template_part', 'wp_global_styles', 'wp_navigation' );
if( !empty( $wp_post_types ) ){
foreach( $wp_post_types as $key_type => $post_type ){
if( in_array( $key_type, $ingnore_types ) ){
$types[$key_type] = $post_type->labels->name;
<?php _e('Post type of items to delete:','wp-bulk-delete'); ?>
foreach( $types as $key_type => $type ){
if( ( $type === "Orders" || $type == "Coupons" || $type == "Refunds" ) && !wpbd_is_pro() ){
<label for="delete_post_type">
<input name="delete_post_type[]" class="delete_post_type" id="<?php echo $key_type; ?>" type="checkbox" value="<?php echo $key_type; ?>" <?php echo $disable; ?> >
<?php printf( __( '%s', 'wp-bulk-delete' ), $type ); ?>
<?php $post_count = wpbd_get_posttype_post_count( $key_type );
echo '('.$post_count .' '. $type .')';
if( $disable == "disabled" ){
do_action( 'wpbd_display_available_in_pro');
_e('No post types are there, WP Bulk Delete will not work.','wp-bulk-delete');
* Render Post type Dropdown.
function wpbd_render_form_posttype_dropdown(){
$ingnore_types = array( 'attachment','revision','nav_menu_item','custom_css', 'customize_changeset', 'oembed_cache', 'user_request', 'wp_block', 'wp_template', 'wp_template_part', 'wp_global_styles', 'wp_navigation' );
if( !empty( $wp_post_types ) ){
foreach( $wp_post_types as $key_type => $post_type ){
if( in_array( $key_type, $ingnore_types ) ){
$types[$key_type] = $post_type->labels->name;
<?php _e('Post type of items to delete:','wp-bulk-delete'); ?>
<select name="delete_post_type" class="delete_post_type" id="delete_post_type" required="required">
foreach( $types as $key_type => $type ){
<label for="delete_post_type">
<option value="<?php echo $key_type; ?>">
<?php printf( __( '%s', 'wp-bulk-delete' ), $type ); ?>
_e('No post types are there, WP Bulk Delete will not work.','wp-bulk-delete');
function wpbd_render_form_taxonomy(){
<?php _e('Post Taxonomy:','wp-bulk-delete'); ?>
<div class="post_taxonomy">
<th scope="row" class="taxo_terms_title">
<?php //_e('Post Taxonomy :','wp-bulk-delete'); ?>
<div class="post_taxo_terms">
jQuery(document).ready(function(){
jQuery('#delete_post_type').trigger( 'change' );
function wpbd_render_extra_assinged_category(){
<th scope="row">Delete Post From Selected Category Only:</th>
<label for="delete_post_status" >
<input name="delete_selected_category" id="delete_selected_category" value="d_s_c" type="checkbox" >
Delete Post From Selected Category Only:
<?php _e( "You can enable this option to delete posts that have not been assigned any other categories from the selected category.",'wp-bulk-delete' ); ?>
function wpbd_render_form_poststatus(){
<th scope="row">Post Status</th>
<label for="delete_post_status" >
<input name="delete_post_status[]" id="publish" value="publish" type="checkbox" checked="checked" >
<label for="delete_post_status">
<input name="delete_post_status[]" id="future" value="future" type="checkbox">
<label for="delete_post_status">
<input name="delete_post_status[]" id="draft" value="draft" type="checkbox">
<label for="delete_post_status">
<input name="delete_post_status[]" id="pending" value="pending" type="checkbox">
<label for="delete_post_status">
<input name="delete_post_status[]" id="private" value="private" type="checkbox">
<label for="delete_post_status">
<input name="delete_post_status[]" id="trash" value="trash" type="checkbox">
if( wpbd_is_pro() && class_exists( 'WP_Bulk_Delete_Pro_Common' ) ){
if( $wpdb->common_pro->wpbd_is_woo_active() == true ){
$wpdb->common_pro->wpbd_woo_order_detele_by_status();
function wpbd_render_form_custom_query(){
<th scope="row">Post Delete from Custom Query:</th>
<label for="delete_post_status" >
<input name="with_custom_query" id="with_custom_query" value="custom_query" type="checkbox" >
<?php _e('You can delete posts from custom queries by enabling this option. This option will work only in the "Delete Permanently" option.','wp-bulk-delete' ); ?>
function wpbd_render_form_date_interval(){
<?php _e('Post Date :','wp-bulk-delete'); ?>
<?php _e('Delete Posts which are','wp-bulk-delete'); ?>
<select name="date_type" class="date_type">
<option value="older_than"><?php _e('older than','wp-bulk-delete'); ?></option>
<option value="within_last"><?php _e('posted within last','wp-bulk-delete'); ?></option>
<?php if( wpbd_is_pro() ) { ?>
<option value="onemonth"><?php _e('1 Month','wp-bulk-delete'); ?></option>
<option value="sixmonths"><?php _e('6 Months','wp-bulk-delete'); ?></option>
<option value="oneyear"><?php _e('1 Year','wp-bulk-delete'); ?></option>
<option value="twoyear"><?php _e('2 Years','wp-bulk-delete'); ?></option>
<option value="custom_date"><?php _e('posted between custom','wp-bulk-delete'); ?></option>
<div class="wpbd_date_days wpbd_inline">
<input type="number" id="input_days" name="input_days" class="wpbd_input_days" placeholder="0" min="0" /> <?php _e('days','wp-bulk-delete'); ?>
<div class="wpbd_custom_interval wpbd_inline" style="display:none;">
<input type="text" id="delete_start_date" name="delete_start_date" class="delete_all_datepicker" placeholder="<?php _e('Start Date','wp-bulk-delete'); ?>" />
<input type="text" id="delete_end_date" name="delete_end_date" class="delete_all_datepicker" placeholder="<?php _e('End Date','wp-bulk-delete'); ?>" />
<?php _e('Set the date interval for items to delete, or leave these fields blank to select all posts. The dates must be specified in the following format: <strong>YYYY-MM-DD</strong>','wp-bulk-delete'); ?>
<div class="wpbd_date_range wpbd_inline" style="display:none;">
<?php _e('This option will work well with Scheduled Delete, which will help to delete posts of the selected option from the scheduled run date.','wp-bulk-delete'); ?>
* Render Modified intervals.
function wpbd_render_form_modified_interval(){
<?php _e('Post Modified:','wp-bulk-delete'); ?>
<?php _e('Delete Posts which are','wp-bulk-delete'); ?>
<select name="mdate_type" class="mdate_type">
<option value="molder_than"><?php _e('older than','wp-bulk-delete'); ?></option>
<option value="mwithin_last"><?php _e('posted within last','wp-bulk-delete'); ?></option>
<option value="mcustom_date"><?php _e('posted between','wp-bulk-delete'); ?></option>
<div class="mwpbd_date_days wpbd_inline">
<input type="number" id="minput_days" name="minput_days" class="wpbd_input_days" placeholder="0" min="0" /> <?php _e('days','wp-bulk-delete'); ?>
<div class="mwpbd_custom_interval wpbd_inline" style="display:none;">
<input type="text" id="mdelete_start_date" name="mdelete_start_date" class="delete_all_datepicker" placeholder="<?php _e('Start Date','wp-bulk-delete'); ?>" />
<input type="text" id="mdelete_end_date" name="mdelete_end_date" class="delete_all_datepicker" placeholder="<?php _e('End Date','wp-bulk-delete'); ?>" />
<?php _e('Set the modified date interval for items to delete, or leave these fields blank to select all posts. The dates must be specified in the following format: <strong>YYYY-MM-DD</strong>','wp-bulk-delete'); ?>
* Render Post Contant Count.
function wpbd_render_form_post_contant_count_interval(){
<?php _e('Post Content Count:','wp-bulk-delete'); ?>
<?php _e('Delete Post with Content Count Limit','wp-bulk-delete'); ?>
<select name="disabled_sample8" disabled="disabled" >
<option value="lessthen"><?php _e( 'Less Than.', 'wp-bulk-delete' ); ?> </option>
<option value="greaterthen"><?php _e( "Greater Then.", "wp-bulk-delete" ); ?> </option>
<div class="mwpbd_date_days wpbd_inline">
<input type="number" id="disabled_sample9" disabled="disabled" name="disabled_sample9" class="limit_post_input" placeholder="0" min="0" /> <?php _e('Character Limit','wp-bulk-delete'); ?>
<?php do_action( 'wpbd_display_available_in_pro'); ?>
* Render Post title and content contains.
function wpbd_render_form_post_contains(){
<?php _e('If Post Title Contains:','wp-bulk-delete'); ?>
<input type="text" id="disabled_sample4" name="disabled_sample4" class="disabled_sample4" disabled="disabled" />
<?php _e( 'Then', 'wp-bulk-delete' ); ?>
<select name="disabled_sample5" disabled="disabled">
<option value=""><?php _e( 'Delete It.', 'wp-bulk-delete' ); ?> </option>
<option value=""><?php _e( "Don't delete It.", "wp-bulk-delete" ); ?> </option>
<?php do_action( 'wpbd_display_available_in_pro'); ?>
<?php _e('If Post Content Contains:','wp-bulk-delete'); ?>
<input type="text" id="disabled_sample6" name="disabled_sample6" class="disabled_sample6" disabled="disabled" />
<?php _e( 'Then', 'wp-bulk-delete' ); ?>
<select name="disabled_sample7" disabled="disabled">
<option value=""><?php _e( 'Delete It.', 'wp-bulk-delete' ); ?> </option>
<option value=""><?php _e( "Don't delete It.", "wp-bulk-delete" ); ?> </option>