Widget w WordPressie z najpopularniejszymi postami bez użycia plugin’u
Jak widać na screenie z poprzedniej strony nie możemy na razie ustawić, żadnych opcji wyświetlania najpopularniejszych wpisów, nawet tytułu widgetu. Pora więc to zmienić. Odpowiedzialna za to jest funkcja form()
. Będziemy w niej musieli napisać cały formularz do obsługi tworzonego przez nas widgetu.
Na początku ustawiamy opcje domyślne takie jak wyświetlanie początku wpisu, liczby odsłon, ikony wpisu oraz oczywiście domyślny tytuł:
/** * Outputs the options form on admin * * @param array $instance The widget options */ public function form( $instance ) { //set default options $my_defaults = array( 'number' => 5, 'title' => 'Najpouplarniejsze posty', 'show_count' => false, //pokarz liczbę wyświetleń 'show_excerpt' => false, //pokarz początek wpisu 'show_thumbnail' => false //pokarz ikonę wpisu ); //Refill options stored in the database with the default options. $instance = wp_parse_args( (array) $instance, $my_defaults ); }
Kolejnym krokiem jest stworzenie formularza. Nie będę się tutaj rozwodził nad kodem, po prostu piszemy zwykły formularz w HTMLu i PHP (jeżeli ktoś ma jakieś pytania to odsyłam do komentarzy):
<p> <!-- Widgets name !--> <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e( 'Tytuł:' ); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($instance['title']); ?>" /> </p> <p> <!-- Number of posts to show !--> <label for="<?php echo $this->get_field_id( 'number' ); ?>"><?php _e( 'Liczba wyświetlanych postów:' ); ?></label> <input id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" type="text" value="<?php echo $instance['number']; ?>" size="3" /> </p> <p> <!-- Show view counts !--> <input class="checkbox" type="checkbox" name="<?php echo $this->get_field_name('show_count'); ?>" id="<?php echo $this->get_field_id('show_count'); ?>" value="true" <?php checked(true, $instance['show_count']);?> /> <label for="<?php echo $this->get_field_id('show_count'); ?>"> <?php _e( 'Wyświetl liczbę wyświetleń' ); ?></label><br /> </p> <p> <!-- Show excerpt !--> <input class="checkbox" type="checkbox" name="<?php echo $this->get_field_name('show_excerpt'); ?>" id="<?php echo $this->get_field_id('show_excerpt'); ?>" value="true" <?php checked(true, $instance['show_excerpt']);?> /> <label for="<?php echo $this->get_field_id('show_excerpt'); ?>"> <?php _e( 'Wyświetl początek wpisu' ); ?></label><br /> </p> <p> <!-- Show thumbnail !--> <input class="checkbox" type="checkbox" name="<?php echo $this->get_field_name('show_thumbnail'); ?>" id="<?php echo $this->get_field_id('show_thumbnail'); ?>" value="true" <?php checked(true, $instance['show_thumbnail']);?> /> <label for="<?php echo $this->get_field_id('show_thumbnail'); ?>"> <?php _e( 'Wyświetl ikonę wpisu' ); ?></label><br /> </p>
Cała funkcja form()
:
/** * Outputs the options form on admin * * @param array $instance The widget options */ public function form( $instance ) { //set default options $my_defaults = array( 'number' => 5, 'title' => 'Najpouplarniejsze posty', 'show_count' => false, //pokarz liczbę wyświetleń 'show_excerpt' => false, //pokarz początek wpisu 'show_thumbnail' => false //pokarz ikonę wpisu ); //Refill options stored in the database with the default options. $instance = wp_parse_args( (array) $instance, $my_defaults ); ?> <p> <!-- Widgets name !--> <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e( 'Tytuł:' ); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($instance['title']); ?>" /> </p> <p> <!-- Number of posts to show !--> <label for="<?php echo $this->get_field_id( 'number' ); ?>"><?php _e( 'Liczba wyświetlanych postów:' ); ?></label> <input id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" type="text" value="<?php echo $instance['number']; ?>" size="3" /> </p> <p> <!-- Show view counts !--> <input class="checkbox" type="checkbox" name="<?php echo $this->get_field_name('show_count'); ?>" id="<?php echo $this->get_field_id('show_count'); ?>" value="true" <?php checked(true, $instance['show_count']);?> /> <label for="<?php echo $this->get_field_id('show_count'); ?>"> <?php _e( 'Wyświetl liczbę wyświetleń' ); ?></label><br /> </p> <p> <!-- Show excerpt !--> <input class="checkbox" type="checkbox" name="<?php echo $this->get_field_name('show_excerpt'); ?>" id="<?php echo $this->get_field_id('show_excerpt'); ?>" value="true" <?php checked(true, $instance['show_excerpt']);?> /> <label for="<?php echo $this->get_field_id('show_excerpt'); ?>"> <?php _e( 'Wyświetl początek wpisu' ); ?></label><br /> </p> <p> <!-- Show thumbnail !--> <input class="checkbox" type="checkbox" name="<?php echo $this->get_field_name('show_thumbnail'); ?>" id="<?php echo $this->get_field_id('show_thumbnail'); ?>" value="true" <?php checked(true, $instance['show_thumbnail']);?> /> <label for="<?php echo $this->get_field_id('show_thumbnail'); ?>"> <?php _e( 'Wyświetl ikonę wpisu' ); ?></label><br /> </p> <?php }
Teraz możemy znowu przejść do panelu administracyjnego WordPress’a. Kiedy odświeżymy stronę z widgetami zobaczymy, że pojawił się formularz do personalizacji wyglądu naszego widgetu: