Snippet

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

Jak dodać walidację niestandardowych pól w WordPressieWalidacja wymaganych pól w WordPressieNiestandardowa walidacja pól formularza w WordPressieHaki walidacji pól w WordPressieWarunkowe wymagane pola w WordPressieDodaj walidację do metaboxu w WordPressiePrzykłady walidacji formularzy w WordPressieKod walidacji niestandardowych pól w WordPressieWskaźnik wymaganych pól w WordPressieWalidacja 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

1<?php 2// Hook into the 'save_post' action to validate custom fields 3add_action('save_post', 'wp_dudecom_validate_custom_fields'); 4 5function wp_dudecom_validate_custom_fields($post_id) { 6 // Check if our nonce is set. 7 if (!isset($_POST['wp_dudecom_custom_fields_nonce'])) { 8 return $post_id; 9 } 10 11 // Verify that the nonce is valid. 12 if (!wp_verify_nonce($_POST['wp_dudecom_custom_fields_nonce'], 'wp_dudecom_custom_fields')) { 13 return $post_id; 14 } 15 16 // If this is an autosave, our form has not been submitted, so we don't want to do anything. 17 if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { 18 return $post_id; 19 } 20 21 // Check the user's permissions. 22 if ('page' == $_POST['post_type']) { 23 if (!current_user_can('edit_page', $post_id)) { 24 return $post_id; 25 } 26 } else { 27 if (!current_user_can('edit_post', $post_id)) { 28 return $post_id; 29 } 30 } 31 32 // Validate required fields 33 if (empty($_POST['wp_dudecom_custom_field'])) { 34 // Add an error message 35 add_filter('redirect_post_location', function($location) { 36 return add_query_arg('wp_dudecom_validation_error', '1', $location); 37 }); 38 return $post_id; 39 } 40 41 // Sanitize and save the custom field 42 $custom_field_value = sanitize_text_field($_POST['wp_dudecom_custom_field']); 43 update_post_meta($post_id, '_wp_dudecom_custom_field', $custom_field_value); 44} 45 46// Display an error message if validation fails 47add_action('admin_notices', 'wp_dudecom_custom_field_error_notice'); 48 49function wp_dudecom_custom_field_error_notice() { 50 if (isset($_GET['wp_dudecom_validation_error'])) { 51 echo '<div class="error"><p>' . __('Custom field is required.', 'textdomain') . '</p></div>'; 52 } 53} 54 55// Add a meta box to the post editing screen 56add_action('add_meta_boxes', 'wp_dudecom_add_custom_meta_box'); 57 58function wp_dudecom_add_custom_meta_box() { 59 add_meta_box( 60 'wp_dudecom_custom_meta_box', 61 __('Custom Field', 'textdomain'), 62 'wp_dudecom_custom_meta_box_callback', 63 'post', 64 'normal', 65 'high' 66 ); 67} 68 69function wp_dudecom_custom_meta_box_callback($post) { 70 // Add a nonce field so we can check for it later. 71 wp_nonce_field('wp_dudecom_custom_fields', 'wp_dudecom_custom_fields_nonce'); 72 73 // Retrieve an existing value from the database. 74 $value = get_post_meta($post->ID, '_wp_dudecom_custom_field', true); 75 76 // Display the form, using the current value. 77 echo '<label for="wp_dudecom_custom_field">'; 78 _e('Enter your custom field:', 'textdomain'); 79 echo '</label> '; 80 echo '<input type="text" id="wp_dudecom_custom_field" name="wp_dudecom_custom_field" value="' . esc_attr($value) . '" size="25" />'; 81} 82?>

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.