top of page

Filtr dnia: widget_tag_cloud_args

Zdjęcie autora: Piotr BartczakPiotr Bartczak

Jednym z domyślnych widgetów, jakie oferuje WordPress jest taki, który pozwala wyświetlić chmurę tagów.

Domyślnie jest wyświetlane 45 tagów, co nie każdemu może odpowiadać.

Do zmiany liczby wyświetlanych tagów należy użyć filtra widget_tag_cloud_args tak, żeby zmienić argument number w funkcji wp_tag_cloud.

W najprostszej wersji możemy użyć takiego kodu:

class iworks_cloud_tag_limiter
{
    public function __construct()
    {
        add_filter('widget_tag_cloud_args', array($this, 'args'));
    }
    public function args($args)
    {
        $args['number'] = 20;
        return $args;
    }
}
new iworks_cloud_tag_limiter();

Ale takie rozwiązanie, które nie pozwala wybrać liczby tagów nie jest rozwiązaniem zbyt eleganckim.

Ustawianie liczby

Tutaj na pomoc rusza Option API, które pozwala dodać do wybranych stron dodatkowe opcje. Zdecydowałem się dorzucić możliwość ustawiania tagów w natywnej zakładce „Ustawienia -> Czytanie”.

class iworks_cloud_tag_limiter
{
    private $option_name = __CLASS__;
    public function __construct()
    {
        add_filter('widget_tag_cloud_args', array($this, 'args'));
        add_action('admin_init', array($this, 'admin_init'));
    }
    public function admin_init()
    {
        register_setting(
            'reading',
            $this->option_name,
            'intval'
        );
        add_settings_field(
            $this->option_name,
            __( 'Number of tags', __CLASS__ ),
            array( $this, 'setting_input'),
            'reading',
            'default'
        );
    }
    public function setting_input()
    {
        printf(
            '<input name="%s" type="number" value="%d" stat="1" step="1" class="small-text" /> %s',
            $this->option_name,
            $this->get_value(),
            __( 'Tags', __CLASS__)
        );
    }
    public function args($args)
    {
        $args['number'] = $this->get_value();
        return $args;
    }
    public static function init()
    {
        new iworks_cloud_tag_limiter();
    }
    private function get_value()
    {
        return get_option( $this->option_name, 45 );
    }
}
iworks_cloud_tag_limiter::init();

We wtyczce nie ma oczywiście tłumaczenia, ale to już zostawiam komuś chętnemu.

Kod do pobrania

Gotowy kod w formie wtyczki, możesz pobrać poniżej.

2 wyświetlenia0 komentarzy

Ostatnie posty

Zobacz wszystkie

Comments


bottom of page