Przechowywanie danych w wordpress
Zadanie zapisywania danych jest tego warte za każdym razem, gdy trzeba coś zaprogramować., a przy tworzeniu wtyczek jest to jedno z pierwszych zadań po utworzeniu części interfejsu. Jednak dane w WordPressie mogą być przechowywane na różne sposoby. Oferuję dwie opcje.
- Zapisywanie danych za pomocą funkcji add_option dla opcji.
- Dodawanie danych do nowej tabeli bazy danych w celu przechowywania dużych ilości danych oraz takich, które mogą się ciągle zmieniać.
Zastanów się, jak prawidłowo przechowywać opcje.
Umieść kod w folderze wtyczek w nowym pliku o nazwie dodaj-moje-opcje.php.
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 52 53 54 55 56 57 |
<?php /** * @package Package name * @version 1.0 */ /* Plugin Name: My plugin add-my-options Plugin URI: https://wp-admin.com.ua Description: спасибо сайту wp-admin.com.ua, он научит меня делать плагины ) Armstrong: My Plugin. Author: Name Author Version: 1.0 Author URI: https://wp-admin.com.ua */ add_action('admin_menu', 'create_custom_panel'); function create_custom_panel() { add_menu_page('menu page', 'Add data', 'manage_options', 'custom-panel', 'custom_panel'); } function custom_panel(){ echo '<div class="wrap"> <h2>Сохраняем опции плагина</h2> <form method="post" action="options.php"> '.wp_nonce_field('update-options').' <table class="form-table"> <tr valign="top"> <th scope="row">Опция 1</th> <td><input type="text" name="my_option_first" value="'.get_option('my_option_first').'" /></td> </tr> <tr valign="top"> <th scope="row">Опция 2</th> <td><input type="text" name="my_option_second" value="'.get_option('my_option_second').'" /></td> </tr> <tr valign="top"> <th scope="row">Опция 3</th> <td><input type="text" name="my_option_third" value="'.get_option('my_option_third').'" /></td> </tr> </table> <input type="hidden" name="action" value="update" /> <input type="hidden" name="page_options" value="my_option_first,my_option_second,my_option_third" /> <p class="submit"> <input type="submit" class="button-primary" value="Сохранить" /> </p> </form> </div>'; } ?> |
Po umieszczeniu kodu aktywuj wtyczkę w panelu administracyjnym i jeśli wszystko zostało wykonane poprawnie, zobaczysz przedmiot Dodaj dane w menu administratora po lewej stronie.
Rozważ kod napisanej wtyczki w kolejności
Funkcjonować wp_nonce_field(„opcje aktualizacji”) dodaje dwa ukryte pola, które umożliwiają automatyczne sprawdzenie uprawnień użytkownika do zmiany ustawień i przekierowanie go z powrotem.
Funkcjonować get_option() wyświetla zapisane dane w polu wprowadzania. Kolejny fragment kodu znajdujący się na końcu formularza odpowiada za wpisywanie opcji z pól wejściowych.
1 2 |
<input type="hidden" name="action" value="update" /> <input type="hidden" name="page_options" value="my_option_first,my_option_second,my_option_third" /> |
«opcje_strony» zawiera oddzieloną przecinkami listę wszystkich ustawień, być nagrywane podczas zapisywania.
Na oficjalnej stronie WordPressa znalazł inny przykład przechowywania danych. Wydaje mi się, będzie to bardziej poprawne, ponieważ istnieje wyraźne oddzielenie szablonu formularza i kodu. Kod wygląda znacznie czyściej. Nie będę wszystkiego opisywał, wszystko jest jasne z kodu, jeśli nie rozumiesz napisz w komentarzu, postaram się wyjaśnić.
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 52 |
<?php // create custom plugin settings menu add_action('admin_menu', 'baw_create_menu'); function baw_create_menu() { //create new top-level menu add_menu_page('BAW Plugin Settings', 'BAW Settings', 'administrator', __FILE__, 'baw_settings_page',plugins_url('/images/icon.png', __FILE__)); //call register settings function add_action( 'admin_init', 'register_mysettings' ); } function register_mysettings() { //register our settings register_setting( 'baw-settings-group', 'new_option_name' ); register_setting( 'baw-settings-group', 'some_other_option' ); register_setting( 'baw-settings-group', 'option_etc' ); } function baw_settings_page() { ?> <div class="wrap"> <h2>Your Plugin Name</h2> <form method="post" action="options.php"> <?php settings_fields( 'baw-settings-group' ); ?> <table class="form-table"> <tr valign="top"> <th scope="row">New Option Name</th> <td><input type="text" name="new_option_name" value="<?php echo get_option('new_option_name'); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Some Other Option</th> <td><input type="text" name="some_other_option" value="<?php echo get_option('some_other_option'); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Options, Etc.</th> <td><input type="text" name="option_etc" value="<?php echo get_option('option_etc'); ?>" /></td> </tr> </table> <p class="submit"> <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" /> </p> </form> </div> <?php } ?> |
Nie miałem czasu sprawdzić ostatniego przykładu, ale pierwszy działa stabilnie. W kolejnych numerach postaram się opisać pracę z bazami danych..
Powodzenia w rozwijaniu wtyczek!
/*
- Podstawowy kurs projektowania stron internetowych;
- Układ stron;
- Ogólny kurs CMS WordPress oraz kontynuacja kursu dotyczącego tworzenia szablonów;
- Tworzenie stron internetowych w PHP.
Kolejny artykuł oprócz pracy z opcjami.
http://wp-admin.com.ua/rassmotrim-mehanizmyi-rabotyi-s-optsiyami/