Какой хук WordPress срабатывает после сохранения всех данных публикации и метаданных публикации?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Какой хук WordPress срабатывает после сохранения всех данных публикации и метаданных публикации?

Сообщение Anonymous »

У меня есть собственный тип сообщений crm, и мне нужно отправлять письмо после каждого сохранения или обновления crm. я использую cmb2 для некоторых пользовательских метаданных, таких как тема, для пользователей и т. д. Я знаю, что ловушка save_post срабатывает после сохранения сообщения (согласно кодексу WordPress) в моем случае, когда я вызываю save_post с двумя параметрами (id и post), сообщение не содержит значений обновления. вот мой код:

Код: Выделить всё

function send_mail_to_user($id, $post){
$crm = $post;
$user_email = array();
if($crm->vc_all_vc == 'on'){
$args = array('orderby' => 'display_name');
$wp_user_query = new WP_User_Query($args);
$authors = $wp_user_query->get_results();
if (!empty($authors)) {
foreach ($authors as $author) {
array_push($user_email , $author->user_email );
}
}
}
else{
$to_users = $crm->vc_users;
$to_program = $crm->vc_program;
$to_group = $crm->vc_group;
$to_excode = $crm->vc_ex_code;
foreach ($to_users as $key => $value) {
$user_data = get_userdata($value);
array_push($user_email, $user_data->user_email);
}
foreach ($to_program as $key => $value) {
$users = get_users( array('meta_key'     => 'programs'  ) );
if($users){
foreach ($users as $index => $data) {
if(in_array($value , explode('#', $data->programs))){
if(! in_array($data->user_email, $user_email)  )
{
array_push($user_email, $data->user_email);
}
}
}
}
}
foreach($to_group as $group) {
$term = get_term_by('slug', esc_attr($group), 'user-group');
$user_ids = get_objects_in_term($term->term_id, 'user-group');
foreach($user_ids as $user_id){
$fc_user = get_userdata($user_id);
if(! in_array($fc_user->user_email, $user_email)  )
{
array_push($user_email, $fc_user->user_email);
}
}
}
foreach($to_excode as $codes) {
$value = explode('*',$codes)[1];
$users = get_users( array('meta_key'     => 'programs'  ) );
if($users){
foreach ($users as $index => $data) {
if(in_array($value , explode('#', $data->programs))){
if(! in_array($data->user_email, $user_email)  )
{
array_push($user_email, $data->user_email);
}
}
}
}
}
}
foreach($user_email as $index => $email){
$to      = $email;
$subject = $crm->vc_subject;
$body    = $crm->post_content;
$headers = array(
'Content-Type: text/html; charset=UTF-8'
);
wp_mail($to, $subject, $body, $headers);
}
}

add_action( 'save_post', 'send_mail_to_user', 10, 2 );
И я также пробую хукPublish_post, который отлично работает при создании нового сообщения, но при обновлении он работает так же. Я также пробовал хуки edit_post и post_updated, но мне так и не удалось получить данные обновления.

Итак, как мне решить эту проблему? какой хук действия предоставит мне все новые данные?
Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/445 ... -post-meta
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»