Dodaj walidację pól niestandardowych w WordPressie dla pól wymaganych
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:
- 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.
- 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. - Wstaw kod: Skopiuj podany kod i wklej go na końcu pliku
functions.php
lub pliku wtyczki. - Zapisz zmiany: Zapisz plik po wklejeniu kodu.
- 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.