web-dev-qa-db-ja.com

すべて表示 WP フォーム検証中に一緒にエラー

ユーザーが投稿できるカスタムのフロントエンドページがあります。すべてうまくいきますが、複数のフィールドが空の場合はすべての空のフィールドのエラーがすべて一緒に表示されます。今のところ、コードは最初に検出した空のフィールドに対してのみエラーを示しています。コードは次のとおりです。

    $errors = new WP_Error();

    if (isEmptyString($title_stripped))
    $errors->add('empty_title', __('Please enter a title'));

    if (isEmptyString($description_stripped))
    $errors->add('empty_desc', __('Enter a breif description'));

    if (isEmptyString($content_stripped))
    $errors->add('empty_content', __('Please enter your article here'));

    return $errors;

編集:解決済み

気にしてすみません。私の他の機能の1つで、エラーを1回だけエコーするように制限していました。これが前のコードです。

function display_message( $message = false ) {
    if( is_wp_error( $message ) ) {
        echo '<div class="error"><p>' . $message->get_error_message() . '</p></div>';  
    }

私もそれを変更したとき、それはうまくいきました:

function display_message( $message = false ) {
    if( is_wp_error( $message ) ) {
        echo '<div class="error"><p>';
        foreach ( $message->get_error_messages($code) as $error ) {
        echo $error . "<br />\n";  
        }
        echo '</p></div>';  
    }
1
Harjeet Singh

気にしてすみません。私の他の機能の1つで、エラーを1回だけエコーするように制限していました。これが前のコードです。

function display_message( $message = false ) {
    if( is_wp_error( $message ) ) {
        echo '<div class="error"><p>' . $message->get_error_message() . '</p></div>';   
    }

私もそれを変更したとき、それはうまくいきました:

function display_message( $message = false ) {
    if( is_wp_error( $message ) ) {
        echo '<div class="error"><p>';
        foreach ( $message->get_error_messages($code) as $error ) {
        echo $error . "<br />\n";   
        }
        echo '</p></div>';  
    }
0
Harjeet Singh