Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

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:

widget-najpopularniejszePosty3

Strony: 1 2 3 4 5 6

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

, , , , , , , ,

Dodaj komentarz

Odpowiedz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Pin It on Pinterest