Spis treści
Wróć. Nie dodajemy takiego kodu. To znaczy dodamy, oczywiście. Ale pominiemy stronę „Prywatność”. Od dłuższego czasu, na tej stronie nie są już renderowane sekcje Settings API, więc jest to bezcelowe. Gdybyśmy to jednak zrobili, WordPress sam nam ten kod przeniesie do „Czytanie”, sami więc rozumiecie, że nie ma to sensu. Lepiej wstawiać kod od razu tam.
Wracając do źródła:
1 2 3 4 5 6 |
toAddTextareaField('to_add_warning', 'Treść ostrzeżenia', 'reading', 'default'); toAddTextareaField('to_block_ip', 'Czarna lista adresów IP', 'discussion', 'default'); toAddTextField('to_avatar_alt', 'Dodaj do znacznika ALT przy avatarze', 'discussion', 'avatars'); toAddTextField('to_image_alt', 'Dodaj do znacznika ALT przy obrazku', 'media', 'default'); toAddTextareaField('to_image_blacklist', 'Blokuj obrazki ze słowami w nazwie:', 'media', 'uploads'); toAddTextareaField('to_permalink_blacklist', 'Nie używaj tych słów w linkach:', 'permalink', 'optional'); |
Z którego, po lekturze poprzedniej części o Settings API, łatwo wywnioskujesz co i gdzie się dodało. Cały kod wygląda teraz tak:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<?php /* Plugin Name: Test opcje Plugin URI: https://wpkurs.pl/ Description: Wtyczka, która pokazuje jak stworzyć Ustawienia za pomocą WordPress API Author: Łukasz Nowicki Version: 0.1.1 Author URI: https://lukasznowicki.info/ Requires at least: 5.4 Tested up to: 5.4 Requires PHP: 7.4 */ function toAddField( $id, $title, $callback, $page, $section ) { add_settings_field( $id, titleWithLabel( $id, $title ), $callback, $page, $section, [ 'id' => $id ] ); register_setting( $page, $id ); } function toAddTextField( $id, $title, $page, $section ) { toAddField( $id, $title, 'toAddInputText', $page, $section ); } function toAddTextareaField( $id, $title, $page, $section ) { toAddField( $id, $title, 'toAddTextarea', $page, $section ); } function toAddInputText( $args ) { echo '<input name="' . $args['id'] . '" type="text" id="' . $args['id'] . '" value="' . esc_attr( get_option( $args['id'], '' ) ) . '" class="regular-text">'; } function toAddTextarea( $args ) { echo '<textarea name="' . $args['id'] . '" id="' . $args['id'] . '" rows="5" cols="50" class="large-text">' . esc_textarea( get_option( $args['id'], '' ) ) . '</textarea>'; } function titleWithLabel( $id, $title ) { return '<label for="' . $id . '">' . $title . '</label>'; } add_action( 'admin_init', function () { toAddTextField( 'to_blog_motto', 'Motto bloga', 'general', 'default' ); toAddTextareaField( 'to_default_lead', 'Domyślny wstęp artykułów', 'writing', 'default' ); toAddTextField( 'to_title_tag', 'Dodatek do tytułu', 'writing', 'post_via_email' ); toAddTextField( 'to_after_email', 'Powiadom po aktualizacji', 'writing', 'remote_publishing' ); toAddTextareaField('to_add_warning', 'Treść ostrzeżenia', 'reading', 'default'); toAddTextareaField('to_block_ip', 'Czarna lista adresów IP', 'discussion', 'default'); toAddTextField('to_avatar_alt', 'Dodaj do znacznika ALT przy avatarze', 'discussion', 'avatars'); toAddTextField('to_image_alt', 'Dodaj do znacznika ALT przy obrazku', 'media', 'default'); toAddTextareaField('to_image_blacklist', 'Blokuj obrazki ze słowami w nazwie:', 'media', 'uploads'); toAddTextareaField('to_permalink_blacklist', 'Nie używaj tych słów w linkach:', 'permalink', 'optional'); } ); |
i działa, co najważniejsze. Ale czy na tym możemy zakończyć? Oczywiście, że nie. Warto pokazać sobie tabelkę, która pokaże nam gdzie możemy używać sekcji (stan dla WordPress v5.4):
Nazwa menu | Id strony | Id sekcji |
---|---|---|
Ogólne | general | default |
Pisanie | writing | default |
post_via_email | ||
Czytanie | reading | default |
Dyskusja | discussion | default |
avatars | ||
Media | media | default |
uploads | ||
Bezpośrednie odnośniki | permalink | optional |
No i bardzo fajnie. Wiesz już, jak dodać swoje pola do „Ustawień” i możesz to stosować w praktyce. Tylko… czy to wszystko? Oczywiście, że nie! Settings API WordPressa jest o wiele bardziej rozbudowane. Po prostu kontynuuj kurs 🙂