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.
pobierz plik: iworks_cloud_tag_limiter
Comments