WordPress: получите текущий post_meta после нажатия кнопки «Обновить», проверьте значение, затем update_post_meta для др ⇐ Php
-
Anonymous
WordPress: получите текущий post_meta после нажатия кнопки «Обновить», проверьте значение, затем update_post_meta для др
Я настраиваю свою панель администратора 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); Этот код в настоящее время делает то, для чего он был запрограммирован, но вместо того, чтобы получать только текущее новое значение, он получает предыдущее (значение поля, когда сообщение открывается в режиме редактирования и до изменения поля ввода).
Мои мысли по этому поводу:
Если бы мы могли позволить новому значению поля обновляться в базе данных (сохранять в публикации) при нажатии кнопки публикации, а затем запустить эту функцию, она будет работать нормально. Если мы сначала сохраним сообщение со всеми полями, затем запустим мою функцию, получим значение и проверим его, то проблем не будет. Я прав?
Эту часть я не могу исправить. Спасибо.
Я настраиваю свою панель администратора 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); Этот код в настоящее время делает то, для чего он был запрограммирован, но вместо того, чтобы получать только текущее новое значение, он получает предыдущее (значение поля, когда сообщение открывается в режиме редактирования и до изменения поля ввода).
Мои мысли по этому поводу:
Если бы мы могли позволить новому значению поля обновляться в базе данных (сохранять в публикации) при нажатии кнопки публикации, а затем запустить эту функцию, она будет работать нормально. Если мы сначала сохраним сообщение со всеми полями, затем запустим мою функцию, получим значение и проверим его, то проблем не будет. Я прав?
Эту часть я не могу исправить. Спасибо.
Мобильная версия