WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Публикация поста с отсрочкой на 24 часа

Может у кого есть готовый код с отстрочкой публикации.

Могу и сам сделать, но пока нет доступа к ПК. Нужно чтоб при нажатии на кнопку опубликовать, срабатывал фильтр и менял время публикации, проще говоря менял дату и ставил пост в Scheduled.

Заметки к вопросу:
kolshix 1 месяц назад

код заточен под мои нужды - если кому-то необходим, нужно подгонять под себя

// ===================================== //
// код для выставления обновления постов //
// =========== by Kolshix ============== //
// ===================================== //
add_action( 'post_submitbox_misc_actions', 'not_update_data_modified' );
function not_update_data_modified($post){    
//  echo get_post_modified_time('Y-m-d H:i:s', false ).'<br>';
//  echo get_post_modified_time('Y-m-d H:i:s', true  ).'<br>';    
	echo '<div class="misc-pub-section misc-pub-section-last">
		  <style>#timestamplock_1:before{ content: ""; position: relative; top: -1px; } #editable-post-name input{width: 53em;min-height: 26px;}</style>
		 <span id="timestamplock" class="fal fa-calendar-edit">         
			<label><input type="radio" name="ext_submitbox[modtime]" value=""  /> Standart </label><br>
			<label><input type="radio" name="ext_submitbox[modtime]" value="1" checked /> Data Modified = Last Modified</label><br>
			<label><input type="radio" name="ext_submitbox[modtime]" value="2" /> Data Modified = Publication Date</label><br>  
			<label><input type="radio" name="ext_submitbox[modtime]" value="3" id="pub_future" /> Data Published + 2~ hours </label>        
		 </span></div> ';
}

 add_filter('wp_insert_post_data','reset_post_date_wpse_121565',99,2);
function reset_post_date_wpse_121565($data,$postarr) {
	if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE  ) return $data; // пропустим если это автосохранение
	if ( ! current_user_can('edit_post', $postarr['ID'] ) ) return $data; // убедимся что пользователь может редактировать запись

	$_POST['ext_submitbox'] = array_map( 'sanitize_text_field', $_POST['ext_submitbox'] ); // чистим все данные от пробелов по краям
	foreach( $_POST['ext_submitbox'] as $key => $value ){
		if( $value == 1 ){              
			$data['post_modified']      = get_post_modified_time('Y-m-d H:i:s' , false); //  $data['post_date'];
			$data['post_modified_gmt']  = get_post_modified_time('Y-m-d H:i:s' , true );    
		}
		if( $value == 2 ){
			$data['post_modified'] = $data['post_date'];
			$data['post_modified_gmt'] = $data['post_date_gmt'];                
		}
		if( $value == 3 ){
			$post_publisht = strtotime( get_post_time('Y-m-d H:i:s' , false) ) + 1800;
			$current_time  = strtotime( current_time('Y-m-d H:i:s' , false) );
			// проверка, редактируем старый или новый пост 
			if ( $post_publisht >  $current_time ){         
				//  Published now           
				$latest_cpt = get_posts("post_type=post&numberposts=2&post_status=future");
				$latest_post = $latest_cpt[0]->ID;  // last second post - first post current    
				$rand_time = rand(7200, 10800); // 3600 = 1 hour
				if( isset( $latest_post ) ){                    
					$data['post_date']      = date( 'Y-m-d H:i:s' ,  get_post_time( 'U', $gmt = false, $latest_post ) + $rand_time ) ;                  
					$data['post_date_gmt']  = date( 'Y-m-d H:i:s' ,  get_post_time( 'U', $gmt = true , $latest_post ) + $rand_time ) ;
					$data['post_status']    = 'future' ;    
				} else {
					$latest_cpt = get_posts("post_type=post&numberposts=2&post_status=publish");
					$latest_post = $latest_cpt[0]->ID;  // last second post - first post current                    

					$data['post_date']      = date( 'Y-m-d H:i:s' ,  get_post_time( 'U', $gmt = false, $latest_post ) + $rand_time ) ;                  
					$data['post_date_gmt']  = date( 'Y-m-d H:i:s' ,  get_post_time( 'U', $gmt = true , $latest_post ) + $rand_time ) ;
					$data['post_status']    = 'future' ;
				}               
			}   else {              
				// Old post

			}
		}   

	}           
	return $data;
}
// END код для выставления обновления постов  
1
kolshix
3 года назад 682

Нет ответов на этот вопрос.

    На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация