WordPress: получите текущий post_meta после нажатия кнопки «Обновить», проверьте значение, затем update_post_meta для дрPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 WordPress: получите текущий post_meta после нажатия кнопки «Обновить», проверьте значение, затем update_post_meta для др

Сообщение Anonymous »


Я настраиваю свою панель администратора WordPress и превращаю ее в своего рода систему управления персоналом. Все работает нормально. Но у меня проблема.

В настоящее время в моей панели есть несколько произвольных типов сообщений. В некоторых из них есть поля статуса, созданные с помощью ACF (расширенные настраиваемые поля). Например, пользователи отправляют свой запрос в этих настраиваемых типах сообщений, а я одобряю или отклоняю запрос через поле раскрывающегося списка.

Два из этих пользовательских типов сообщений связаны друг с другом. Таким образом, если «статус» запроса одобрен или не одобрен в оставить запросы CPT, необходимо обновить «field/post_meta» в другом сообщении из другого пользовательского типа сообщения, называемого Список входа и выхода.

Итак, вкратце; Мне нужно сделать такую ​​систему:
[*]На странице редактирования сообщения произвольного типа (запрос на отказ) в панели администратора я меняю раскрывающееся поле (Одобрение или отклонение запроса) [*]Затем я нажимаю кнопку Обновить/Опубликовать (оставляю запрос CPT), чтобы обновить поле статуса запроса. [*]Та часть, которая мне нужна: теперь после нажатия кнопки Обновить/Опубликовать она должна получить текущее выбранное или текущее значение поля статуса запроса. Затем, в зависимости от значения, он должен условно обновить post_mata для другого сообщения.
На данный момент/проблема:

Мой код может делать все, что я хочу, но он также получает значение предыдущего поля, а не только текущее новое выбранное значение поля. Он должен получать только новое измененное значение, а не то, что было отправлено ранее.

Мой код:

Это моя функция в файле functions.php моей темы:

function update_vosooli_status_to_portal($post_id, $post) { глобальный $wpdb, $post; // Идентификатор второго поста, который нам следует обновить // Идентификатор сохраняется в метате текущего сообщения (настраиваемое поле). $target_post_id = get_post_meta($post->ID, 'parvande_id_invosolli', true); // Получение значения поля Статус. Это также получает предыдущее значение. Это проблема: $request_status = get_post_meta($post->ID, 'vosooli_status', true); // Это значение, когда поле выбрано для утверждения // Я использую это для сравнения со значением "$request_status" $request_status_approved = 'Запрос одобрен'; // Проверяем, равен ли «$request_status» «$request_status_approved» если ($request_status == $request_status_approved) { // Это обновит метаданные другого сообщения в другом сообщении с пользовательским значением update_post_meta($target_post_id, 'parvandeh_completaion', 'Сотрудники ушли в отпуск'); } } // мой CPT — «vosooli», поэтому я использовал «publish_vosooli» для запуска функций при обновлении сообщения add_action('publish_vosooli', 'update_vosooli_status_to_portal', 10, 2); Этот код в настоящее время делает то, для чего он был запрограммирован, но вместо того, чтобы получать только текущее новое значение, он получает предыдущее (значение поля, когда сообщение открывается в режиме редактирования и до изменения поля ввода).

Мои мысли по этому поводу:

Если бы мы могли позволить новому значению поля обновляться в базе данных (сохранять в публикации) при нажатии кнопки публикации, а затем запустить эту функцию, она будет работать нормально. Если мы сначала сохраним сообщение со всеми полями, затем запустим мою функцию, получим значение и проверим его, то проблем не будет. Я прав?

Эту часть я не могу исправить. Спасибо.
Ответить

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

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

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

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

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