Rozwój widżetów konsoli. Widżet API WordPress
Jeśli masz podstawową wiedzę programistyczną, wtedy nie będzie ci trudno nauczyć się tworzyć własne widżety WordPress. Ten artykuł przyda Ci się, jeśli przygotowujesz się do tworzenia własnych wtyczek WordPress.. nie pociągnę, po prostu zacznij tworzyć swoje widżety.
Tworzenie prostej wtyczki
Stwórzmy najpierw prostą wtyczkę., w tym celu musimy utworzyć w folderze wtyczek /wp-content/plugins/ plik test-plugin.php. W utworzonym pliku utwórz kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php /** * @package Create_widget * @version 1.6 */ /* Plugin Name: Create widget Plugin URI: https://wp-admin.com.ua/widget-api-wordpress/ Description: Плагин который добавляет виджет. Author: Максим Version: 1.6 Author URI: https://wp-admin.com.ua/ */ ?> |
Nie będę teraz opisywał linii wtyczek., Myśleć, temu warto poświęcić osobny artykuł, ale ten prosty kod pozwoli nam wyświetlić naszą wtyczkę w panelu administracyjnym, możesz go natychmiast aktywować.
Tak wtyczka będzie wyglądać w panelu administracyjnym WordPress w sekcji wtyczek.
Po aktywacji wtyczki możemy kontynuować jej dodawanie. Głównym narzędziem do dodawania widżetu jest funkcja wp_add_dashboard_widget () który dodaje widżet do pulpitu nawigacyjnego WordPress. Rozważ wejście funkcji:
- $widget_id (liczba całkowita) – wymagany parametr, identyfikator, będzie używany jako klasa CSS i klucz w tablicy widżetów pulpitu nawigacyjnego WordPress.
- $widget_name (termin) – wymagany parametr, Nazwa widżetu, który będzie wyświetlany w nagłówku widżetu.
- $Wywołania zwrotnego (termin) – wymagany parametr, nazwa funkcji, który wyświetli zawartość widżetu konsoli.
- $control_callback (termin) – parametr opcjonalny, oddzwonić, nazwa funkcji, który obsłuży postać nowego widżetu Konsoli. Na razie nie będziemy pracować z tą funkcją..
Przykład i kolejność wprowadzania parametrów dla funkcji wp_add_dashboard_widget
1 |
<?php wp_add_dashboard_widget($widget_id, $widget_name, $callback, $control_callback ); ?> |
Widżet dodaje kod funkcji
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php // Функция отображения содержимого нового виджета Консоли: function dashboard_widget_function() { echo "Hello World, this id my first Dashboard Widget!"; } // Функция, используемая в действии крючка: function add_dashboard_widgets() { wp_add_dashboard_widget('dashboard_widget', 'Example Dashboard Widget', 'dashboard_widget_function'); } // Регистрация нового виджета Консоли с помощью действия 'wp_dashboard_setup': add_action('wp_dashboard_setup', 'add_dashboard_widgets' ); ?> |
Uruchamianie widżetów w konsoli implementuje akcję wp_dashboard_setup który wywołuje funkcję add_dashboard_widgets. W naszym przykładzie funkcja add_dashboard_widgets odpowiedzialny za wyświetlanie informacji w bloku widgetów.
W wyniku użycia tego kodu w naszej wtyczce, widżet pojawi się w konsoli CMS.
Przykład danych wyjściowych widżetu
Ten przykład może być użyty do wyprowadzenia wszelkiego rodzaju ważnych informacji do konsoli (statystyki sprzedaży w sklepie internetowym, kontakty studia, które stworzyło stronę i ją utrzymuje, artykuły, które zostały opublikowane przez użytkowników o określonej roli lub nawet przez oddzielnego użytkownika). Informacje mogą być wyświetlane w różnych.
Pewnie zauważyłeś, że niektóre widżety mają dodatkowe ustawienia, na przykład widżet świeżych komentarzy można skonfigurować i określić, ile z nich będzie wyświetlanych w konsoli.
Rozważmy bardziej szczegółowo metody wdrażania tej funkcji.. Po pierwsze, dla tych, którzy nie znają WordPressa, opcje pośrednie i parametry są zapisywane za pomocą specjalnego mechanizm opcji. Możesz poćwiczyć pracę z opcjami w jednym z moich artykułów pt “Przechowywanie danych w wordpress“.
Jeśli znasz mechanizm opcji lub przeczytałeś moje artykuły i wszystko zrozumiałeś, następnie spróbuj zastąpić stary kod naszej wtyczki tym:
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 58 59 60 61 62 63 64 65 66 67 |
<?php /** * @package Create_widget * @version 1.6 */ /* Plugin Name: Create widget Plugin URI: https://wp-admin.com.ua/widget-api-wordpress/ Description: Плагин который добавляет виджет. Author: Максим Version: 1.6 Author URI: https://wp-admin.com.ua/ */ //Показать widget function custom_dashboard_widget_coach() { //get saved data if ( !$widget_options = get_option( 'my_dashboard_widget_options' ) ) $widget_options = array(); $saved_team = isset($widget_options['team'])? $widget_options['team'] : ''; echo " <p><strong>Выберите один из вариантов</strong></p> <div class='team_class_wrap'> <label>Выбран вариант: {$saved_team}</label> </div> "; } //Настройка и обновление widget function custom_dashboard_widget_coach_handle(){ // получить сохраненные данные if ( !$widget_options = get_option( 'my_dashboard_widget_options' ) ) $widget_options = array(); // обновление данных if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['my_dashboard_widget_options']) ) { // базовая валидация // Чистим строку, оставляя в ней только указанные HTML теги, их атрибуты и значения атрибутов. $widget_options['team'] = wp_kses($_POST['my_dashboard_widget_options']['team'],array() ); //Сохраняем изменения в опциях update_option( 'my_dashboard_widget_options', $widget_options ); } // задаем значение по умолчанию if(!isset($widget_options['team'])) $widget_options['team'] = ''; // тут вы можите задать значение по умолчанию echo " <p><strong>Выберите один из вариантов</strong></p> <div class='team_class_wrap'> <label>Выберите параметр:</label> <select name='my_dashboard_widget_options[team]' id='team'> <option value='1' ".selected( $widget_options['team'], '1', false ).">1</option> <option value='2' ".selected( $widget_options['team'], '2', false ).">2</option> <option value='3' ".selected( $widget_options['team'], '3', false ).">3</option> <option value='4' ".selected( $widget_options['team'], '4', false ).">4</option> </select> </div> "; } // регистрация виджета function add_custom_dashboard_widget_coach() { wp_add_dashboard_widget('custom_dashboard_widget_coach', 'Пример виджета с опциями', 'custom_dashboard_widget_coach', 'custom_dashboard_widget_coach_handle'); } add_action('wp_dashboard_setup', 'add_custom_dashboard_widget_coach'); ?> |
Usuwanie zbędnych widżetów z konsoli
Istnieją dwa podejścia. Pierwszym podejściem jest wyczyszczenie tablicy globalnej zawierającej listę takich widżetów:
1 2 3 4 5 |
function remove_dashboard_widgets() { global $wp_meta_boxes; unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']); } add_action('wp_dashboard_setup', 'remove_dashboard_widgets' ); |
Ten przykład usuwa widżet Szybka publikacja.
W razie potrzeby inne widżety można usunąć, nieznacznie zmieniając ostatni zagnieżdżony klucz w tablicy:
Usuwa widżet “Wtyczki”
$wp_meta_boxes['deska rozdzielcza']['normalna']['rdzeń'][„dashboard_plugins”]
Usuwa “Świeże szkice”
$wp_meta_boxes['deska rozdzielcza']['strona']['rdzeń'][„dashboard_recent_drafts”]
Usuwa “Świeże komentarze”
$wp_meta_boxes['deska rozdzielcza']['normalna']['rdzeń'][„dashboard_recent_comments”]
Usuwa widżet “Linki przychodzące”
$wp_meta_boxes['deska rozdzielcza']['normalna']['rdzeń'][„dashboard_incoming_links”]
Usuwa widżet “Już teraz”
$wp_meta_boxes['deska rozdzielcza']['normalna']['rdzeń'][„dashboard_right_now”]
Aby usunąć wszystkie bloki standardowych widżetów z pulpitu nawigacyjnego WordPress użyj następującego kodu:
1 2 3 4 5 6 7 8 9 10 11 12 |
function remove_dashboard_widgets() { global $wp_meta_boxes; unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']); unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']); unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']); unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']); unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']); unset($wp_meta_boxes['dashboard']['side']['core']['recent_drafts']); unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']); } add_action('wp_dashboard_setup', 'remove_dashboard_widgets' ); |
Również drugie podejście do usunięcia, jest to wykorzystanie specjalnych funkcji rdzenia CMS. Oto przykład Kodeksu WordPress.
1 2 3 4 5 6 7 8 |
// Создаем функцию для использования в специальном экшене function example_remove_dashboard_widgets() { remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' ); remove_meta_box( 'dashboard_incoming_links', 'dashboard', 'normal' ); } // Экшен для запуска функции 'wp_dashboard_setup' add_action('wp_dashboard_setup', 'example_remove_dashboard_widgets' ); |
Jeśli nie musisz usuwać bloków widżetów, ale twój widżet po zainstalowaniu wtyczki doszedł do końca, można go domyślnie umieścić na początku, przestawiając globalną tablicę ze wszystkimi widżetami (globalne $wp_meta_boxes;). Nie piszę tutaj o sortowaniu i rearanżacji tablic, to są pytania php.
W przypadku bardziej zaawansowanej pracy z widżetami zawsze możesz zobaczyć, jak zostały zaprogramowane w samym jądrze WordPressa., w pliku:
/wp-admin/includes/dashboard.php
Przeczytaj więcej o interfejsie API widgetów
Kod, aby wyświetlić wszystkie opcje standardowe widżety.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
function get_dashboard_widget_options( $widget_id='' ) { //Берем все опции виджетов из базы данных $opts = get_option( 'dashboard_widget_options' ); //Если не указан идентификатор виджета, то берем все опции if ( empty( $widget_id ) ) return $opts; //Если указан идентификатор виджета, то возвращаем только опции этого виджета, если таковые есть if ( isset( $opts[$widget_id] ) ) return $opts[$widget_id]; //если ни одно условие не подошло возвращаем false... return false; } |
Aby wyświetlić jedną opcję widżetu możesz skorzystać z funkcji:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public static function get_dashboard_widget_option( $widget_id, $option, $default=NULL ) { $opts = get_dashboard_widget_options($widget_id); //если опции не найдены false if ( ! $opts ) return false; //В противном случаи, если есть опция и она не пустая, выводим содержимое опции if ( isset( $opts[$option] ) && ! empty($opts[$option]) ) return $opts[$option]; else return ( isset($default) ) ? $default : false; } |
Aby zaktualizować opcje widżetów Kodeks WordPress oferuje następującą funkcję:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public static function update_dashboard_widget_options( $widget_id , $args=array(), $add_only=false ) { //достаем все опции виджета из базы данных... $opts = get_option( 'dashboard_widget_options' ); //берем опции только нашего виджета или объявляем пустой массив $w_opts = ( isset( $opts[$widget_id] ) ) ? $opts[$widget_id] : array(); if ( $add_only ) { //Flesh out any missing options (existing ones overwrite new ones) $opts[$widget_id] = array_merge($args,$w_opts); } else { // Добавляем к существующим опциям новые $opts[$widget_id] = array_merge($w_opts,$args); } //Сохраняем весь массив опций виджета обратно в базу данных return update_option('dashboard_widget_options', $opts); } |
Aby uzyskać pełniejsze przestudiowanie materiału, możesz potrzebować artykułów:
Myślę, że na dziś masz wystarczająco dużo materiału, który możesz przestudiować i przetestować w swoich wtyczkach. Powodzenia w tworzeniu wysokiej jakości witryn.
/*
- 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.