Dodaj walidację pól niestandardowych w WordPressie dla pól wymaganych

Jak dodać walidację niestandardowych pól w WordPressie; Walidacja wymaganych pól w WordPressie; Niestandardowa walidacja pól formularza w WordPressie; Haki walidacji pól w WordPressie; Warunkowe wymagane pola w WordPressie; Dodaj walidację do metaboxu w WordPressie; Przykłady walidacji formularzy w WordPressie; Kod walidacji niestandardowych pól w WordPressie; Wskaźnik wymaganych pól w WordPressie; Walidacja danych wejściowych formularza w WordPressie;

Objaśnienie

Kiedy pracujesz z WordPress i chcesz upewnić się, że określone pola są wypełnione przed zapisaniem posta, możesz skorzystać z walidacji pól. Ten kod pomaga w tym, sprawdzając, czy niestandardowe pole jest wypełnione i wyświetlając błąd, jeśli nie jest.

Oto jak to działa:

  • Walidacja przy zapisie: Kod podłącza się do akcji 'save_post'. Oznacza to, że uruchamia się za każdym razem, gdy post jest zapisywany. Sprawdza, czy konkretne niestandardowe pole jest puste. Jeśli tak, zapobiega zapisaniu posta i wyświetla komunikat o błędzie.
  • Sprawdzanie bezpieczeństwa: Używa nonce (tokena bezpieczeństwa), aby upewnić się, że żądanie jest legalne. Sprawdza również uprawnienia użytkownika, aby upewnić się, że osoba zapisująca post ma odpowiedni dostęp.
  • Powiadomienie o błędzie: Jeśli pole jest puste, na ekranie administracyjnym wyświetlany jest komunikat o błędzie, informujący użytkownika, że musi wypełnić to pole.
  • Pole Meta: Do ekranu edycji posta dodawane jest pole meta. To tutaj użytkownicy mogą wprowadzać wartość niestandardowego pola. Bieżąca wartość jest wyświetlana w polu wejściowym, co ułatwia aktualizację.

To rozwiązanie jest świetne, aby upewnić się, że ważne informacje nie zostaną pominięte podczas tworzenia lub edytowania postów. Utrzymuje Twoje dane spójne i wiarygodne, zapewniając, że wymagane pola są zawsze wypełnione.

Kod

<?php
// Hook into the 'save_post' action to validate custom fields
add_action('save_post', 'wp_dudecom_validate_custom_fields');

function wp_dudecom_validate_custom_fields($post_id) {
    // Check if our nonce is set.
    if (!isset($_POST['wp_dudecom_custom_fields_nonce'])) {
        return $post_id;
    }

    // Verify that the nonce is valid.
    if (!wp_verify_nonce($_POST['wp_dudecom_custom_fields_nonce'], 'wp_dudecom_custom_fields')) {
        return $post_id;
    }

    // If this is an autosave, our form has not been submitted, so we don't want to do anything.
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return $post_id;
    }

    // Check the user's permissions.
    if ('page' == $_POST['post_type']) {
        if (!current_user_can('edit_page', $post_id)) {
            return $post_id;
        }
    } else {
        if (!current_user_can('edit_post', $post_id)) {
            return $post_id;
        }
    }

    // Validate required fields
    if (empty($_POST['wp_dudecom_custom_field'])) {
        // Add an error message
        add_filter('redirect_post_location', function($location) {
            return add_query_arg('wp_dudecom_validation_error', '1', $location);
        });
        return $post_id;
    }

    // Sanitize and save the custom field
    $custom_field_value = sanitize_text_field($_POST['wp_dudecom_custom_field']);
    update_post_meta($post_id, '_wp_dudecom_custom_field', $custom_field_value);
}

// Display an error message if validation fails
add_action('admin_notices', 'wp_dudecom_custom_field_error_notice');

function wp_dudecom_custom_field_error_notice() {
    if (isset($_GET['wp_dudecom_validation_error'])) {
        echo '<div class="error"><p>' . __('Custom field is required.', 'textdomain') . '</p></div>';
    }
}

// Add a meta box to the post editing screen
add_action('add_meta_boxes', 'wp_dudecom_add_custom_meta_box');

function wp_dudecom_add_custom_meta_box() {
    add_meta_box(
        'wp_dudecom_custom_meta_box',
        __('Custom Field', 'textdomain'),
        'wp_dudecom_custom_meta_box_callback',
        'post',
        'normal',
        'high'
    );
}

function wp_dudecom_custom_meta_box_callback($post) {
    // Add a nonce field so we can check for it later.
    wp_nonce_field('wp_dudecom_custom_fields', 'wp_dudecom_custom_fields_nonce');

    // Retrieve an existing value from the database.
    $value = get_post_meta($post->ID, '_wp_dudecom_custom_field', true);

    // Display the form, using the current value.
    echo '<label for="wp_dudecom_custom_field">';
    _e('Enter your custom field:', 'textdomain');
    echo '</label> ';
    echo '<input type="text" id="wp_dudecom_custom_field" name="wp_dudecom_custom_field" value="' . esc_attr($value) . '" size="25" />';
}
?>

Instrukcja

Lokalizacja pliku: Dodaj poniższy kod do pliku functions.php swojego motywu lub do pliku własnej wtyczki.

Wymagania wstępne: Do tej implementacji nie są wymagane dodatkowe wtyczki.

Kroki implementacji:

  1. Dostęp do plików WordPress: Użyj klienta FTP lub menedżera plików swojego dostawcy hostingu, aby uzyskać dostęp do plików instalacji WordPress.
  2. Znajdź plik: Przejdź do katalogu swojego motywu i otwórz plik functions.php. Alternatywnie możesz stworzyć lub użyć istniejącego pliku własnej wtyczki.
  3. Wstaw kod: Skopiuj podany kod i wklej go na końcu pliku functions.php lub pliku wtyczki.
  4. Zapisz zmiany: Zapisz plik po wklejeniu kodu.
  5. Przetestuj implementację:
    • Przejdź do panelu administracyjnego WordPress.
    • Edytuj lub stwórz nowy wpis.
    • Znajdź pole "Custom Field" na ekranie edycji wpisu.
    • Spróbuj zapisać wpis bez wprowadzania wartości w polu niestandardowym, aby zobaczyć walidację w akcji.

Uwaga: Ten kod dodaje sprawdzenie walidacji dla pola niestandardowego podczas zapisywania wpisów. Jeśli pole jest puste, wyświetli się komunikat o błędzie, a wpis nie zostanie zapisany, dopóki pole nie zostanie wypełnione.

Jeśli potrzebujesz pomocy przy implementacji lub bardziej zaawansowanej funkcjonalności, rozważ skorzystanie z usług wp-dude.com.