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

[РЕШЕНО 100% + 2 Варианта] Поправить пост без изменения даты последнего обновления (Last edited)

на сайте 2 сортировки, по дате публикации и по обновлениям постов.
Иногда нужно поравить косяки и орфографию в постах, из-за этого пост попадает в список обновлений.
Подскажите: хочу добавить произвольное поле с галочкой , без сохранения данных из этого поля ( инструкция у КАМА есть, просто добавлю новый параметр чтоб код его не захватывал),

  • какой код добавить чтоб он сообщал посту, что дату редактирования не нужно обновлять ??
  • как выставить очередность и срабатывание фильтра при чекбоксе??
    Сохранять чек бокс не нужно, так как действие на один раз.

// добавляем меню в BOX 
add_action( 'post_submitbox_misc_actions', 'not_update_data_mod' );
function not_update_data_mod($post)
{
	// $value = get_post_meta($post->ID, '_publish_in_frontpage', true);
	echo '<div class="misc-pub-section misc-pub-section-last"><style></style>
		 <span id="timestamp">'        
		  . '<label style="display: none;" ><input type="hidden"  ' . 'value=""  name="extra_1000[my_checkbox]" />Force update data</label>'
		  . '<label                         ><input type="checkbox"' . 'value="1" name="extra_1000[my_checkbox]" />Force update data</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['extra_1000'] = array_map( 'sanitize_text_field', $_POST['extra_1000'] ); // чистим все данные от пробелов по краям
	foreach( $_POST['extra_1000'] as $key => $value ){
		if( $value == 1 ){
			$data['post_modified'] = $data['post_date'];
			$data['post_modified_gmt'] = $data['post_date_gmt'];            
		}
	}           
	return $data;
}

Вариант 2 - выбор между
/ Стандарт - то есть обновить по текущему времени /
/ Дата обновления = Последней дате обновления /
/ Дата обновления = Дате Создания /

// ======================================
// код для выставления обновления постов 
// ======================================
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; }</style>
		 <span id="timestamplock" class="fal fa-calendar-edit">         
			<label><input type="radio" name="ext_submitbox[modtime]" value="" checked /> Standart </label><br>
			<label><input type="radio" name="ext_submitbox[modtime]" value="1" /> Data Modified = Last Modified</label><br>
			<label><input type="radio" name="ext_submitbox[modtime]" value="2" /> Data Modified = Creation</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'];                
		}

	}           
	return $data;
}
// END код для выставления обновления постов 
// ОРИГИНАЛЫ КОДОВ - их добавлять не нужно , они для заметки  
// дата модификации равна дате публикации 
function reset_post_date_wpse_121565($data,$postarr) {
  // var_dump($data,$postarr); die; // debug
  $data['post_modified'] = $data['post_date'];
  $data['post_modified_gmt'] = $data['post_date_gmt'];
  return $data;
}
add_filter('wp_insert_post_data','reset_post_date_wpse_121565',99,2);

// оригинал кода // дата публикации равна дате модификации 
function reset_post_date_wpse_121565($data,$postarr) {
  // var_dump($data,$postarr); die; // debug
  $data['post_date'] = $data['post_modified'];
  $data['post_date_gmt'] = $data['post_modified_gmt'];
  return $data;
}
add_filter('wp_insert_post_data','reset_post_date_wpse_121565',99,2);
Заметки к вопросу:
kolshix 29 Фев. 2020

осталось дело за малым, добавить менюшку по типу как у КАМА или как на скрине. Как на скрине ещё не знаю как сделать, буду искать

campusboy 1 Мар. 2020

Насчёт чекбокса в метабоксе можно подглядеть тут https://wp-kama.ru/question/plagin-dlya-isklyucheniya-posta-iz-vyvoda-na-glavnoj-stranitsy

kolshix 1 Мар. 2020

Я уже нашел код и сделал в описании. Только что проверил тот что по ссылке: они оба крепятся к post_submitbox_misc_actions.

0
kolshix
29 февраля 2020 615

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

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