Показывать пользовательские сообщения об ошибках из формы отправки плагина wp

#php #wordpress

#php #wordpress

Вопрос:

Я разрабатываю плагин WordPress и довольно новичок в WordPress. Я ищу способ показывать пользовательские сообщения об ошибках на основе некоторой логики на странице настроек плагина в wp-admin

У меня эта форма отображается в wp-admin

 <form method="post" action="options.php" autocomplete="off">
                    <?php
                    // This prints out all hidden setting fields
                    settings_fields('iskills_pros_and_cons');

                    // output setting sections based on tab selections
                    if ($active_tab == 'global') {
                        do_settings_sections('iskills_pros_and_cons_default');
                    } else if ($active_tab == 'heading') {
                        do_settings_sections('iskills_pros_and_cons_heading');
                    } else if ($active_tab == 'section') {
                        do_settings_sections('iskills_pros_and_cons_body');
                    } else if ($active_tab == 'button') {
                        do_settings_sections('iskills_pros_and_cons_button');
                    } else {
                        do_settings_sections('iskills_pros_and_cons_icons');
                    }

                    submit_button();
                    ?>
                </form>
 

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

Ответ №1:

Я использовал метод очистки для выполнения пользовательской проверки, в случае сбоя возвращал ошибку

 public function sanitize($input) {
        if(true) {
            // There is an error
            add_settings_error( 'general', 'settings_updated', __( "Message" ), 'error' );
            set_transient( 'settings_errors', get_settings_errors(), 30 );
            // Redirect back to the settings page that was submitted.
            $goback = add_query_arg( 'settings-updated', 'true', wp_get_referer() );
            wp_redirect( $goback );
            exit;
        }
    }