Intereting Posts
Обеспечение получения липких сообщений сначала (без использования двух запросов)? Как добавить дополнительное поле для комментариев в форме над кнопкой отправки? Как изменить порядок пользовательских таксономий в правой части страницы редактирования пользовательских сообщений? Почему WordPress с Nginx Multisite только позволяет администраторам загружать ZIP-плагины, но не темы? Как я могу получить постоянную ссылку на страницу, на которой был использован короткий код? Как я могу заставить wp-pagenavi работать с настраиваемым запросом, основанным на представлении формы? Загружать скрипты для do_shortcode ('') Multisites – выберите главную страницу на основе местоположения Могу ли я индивидуально стилизовать элементы в списке виджетов бэкэнд? Остановить автоматическую загрузку wp-admin admin-ajax.php Скрыть пользовательский тип сообщения из диспетчера меню навигации Как использовать tax_query, кроме как slug или id, или разрешать конфликты пользовательских таксономии с ранее существующими тегами? Удалить размер из wp_get_attachment_image Получите все страницы и сообщения с помощью get_pages () или get_posts () Странная проблема с полем ввода HIdden и WPAlchemy

Выполнить код только после нажатия пользователем кнопки «Обновить» для редактирования CPT

В моем плагине мои персонализированные сообщения типа сообщений могут обновляться либо пользователем, щелкнувшим «обновление» на странице редактора, либо программным путем. Мне нужно выполнить процедуру проверки настроек только тогда, когда обновление было сделано человеком. Это то, что я придумал, но мне было интересно, есть ли лучший способ?

В конструкторе класса:

add_action( 'save_post_my-CPT, array( &$this, 'after_save_cpt' ) ); 

Функция обратного вызова:

 /* code to run after the user has updated/saved a CPT */ public function after_save_cpt( ) { if ( function_exists( 'get_current_screen' ) ) $cur_screen = get_current_screen()->parent_file; else $cur_screen = ''; if ( 'my-settings-screen' != $cur_screen ) { remove_action( 'save_post_my-CPT, array( &$this, 'after_save_cpt' ) ); do_action( 'validate_all_settings' ); } } 

Кажется, что он работает нормально, и в основном он говорит, что если они не находятся на странице настроек для плагина (где может произойти «программное» обновление сообщений), чтобы запустить действие «validate_all_settings», которое улавливается функцией hook в другом классе ,

Мне не нравится это по двум причинам: (а) если это «remove_action» не происходит по какой-либо причине, это будет бесконечная петля и выхлопная память стека, и (б) она все еще выполняется один раз, даже если они не включены на странице редактора сообщений.

Я надеялся на что-то вроде «запустите этот код ТОЛЬКО, если пользователь находится на странице, полученной из edit.php ». Я не мог понять, как это сделать.