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:
