Intereting Posts

Захват фильтра wp_insert_post_data определяет текущее действие

У меня есть эта функция, чтобы установить заголовок сообщения WordPress, который работает правильно для сохранения / обновления сообщений. Основная проблема заключается в том, что функция останавливает удаляемые сообщения (удаляет заголовок, но почта все еще существует).

Есть ли способ определить, является ли действие удаленной записью, а не записью сохранения / обновления, и, очевидно, я не возвращаю данные $, если это действие удаления?

add_filter( 'wp_insert_post_data', array($this, 'updatetitle' ) , '99', 1 ); public function updatetitle($data) { if($data['post_type'] != $property->post_name || !$_POST[${$this->active_class_var_name}->noncefield] ): return $data; endif; if($_POST['address'] && $_POST[$property->noncefield]): $data['post_title']= ucfirst (sanitize_text_field($_POST['address'])).' '.ucfirst (sanitize_text_field($_POST['town'])).' '.ucfirst (sanitize_text_field($_POST['county']) ); endif; return $data; } 

Не уверен, но, возможно, $ data ['post_status'] будет настроен на «мусор» в этой точке. Если да, тогда вы можете просто сделать что-то вроде …

 if ($data['post_status'] == 'trash') { return $data; } 

… перед другими манипуляциями.

РЕДАКТИРОВАТЬ

Этот код должен работать тогда – но должен быть в верхней части функции, например …

 public function updatetitle($data) { if ($data['post_status'] == 'trash') { return $data; } if($data['post_type'] != $property->post_name || !$_POST[${$this->active_class_var_name}->noncefield] ): return $data; endif; if($_POST['address'] && $_POST[$property->noncefield]): $data['post_title']= ucfirst (sanitize_text_field($_POST['address'])).' '.ucfirst (sanitize_text_field($_POST['town'])).' '.ucfirst (sanitize_text_field($_POST['county']) ); endif; return $data; 

}

Ваша функция в этом случае просто вернет обратно данные $ без каких-либо других изменений.

Попробуйте использовать save_post вместо wp_insert_post_data .

Он должен решить вашу проблему