mirror of
https://github.com/WordPress/WordPress.git
synced 2024-09-09 22:29:05 +02:00
104 lines
3.1 KiB
PHP
104 lines
3.1 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Tag cloud widget class
|
||
|
*
|
||
|
* @since 2.8.0
|
||
|
* @package WordPress
|
||
|
* @subpackage Widgets
|
||
|
*/
|
||
|
class WP_Widget_Tag_Cloud extends WP_Widget {
|
||
|
|
||
|
public function __construct() {
|
||
|
$widget_ops = array( 'description' => __( "A cloud of your most used tags.") );
|
||
|
parent::__construct('tag_cloud', __('Tag Cloud'), $widget_ops);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param array $args
|
||
|
* @param array $instance
|
||
|
*/
|
||
|
public function widget( $args, $instance ) {
|
||
|
$current_taxonomy = $this->_get_current_taxonomy($instance);
|
||
|
if ( !empty($instance['title']) ) {
|
||
|
$title = $instance['title'];
|
||
|
} else {
|
||
|
if ( 'post_tag' == $current_taxonomy ) {
|
||
|
$title = __('Tags');
|
||
|
} else {
|
||
|
$tax = get_taxonomy($current_taxonomy);
|
||
|
$title = $tax->labels->name;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/** This filter is documented in wp-includes/default-widgets.php */
|
||
|
$title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
|
||
|
|
||
|
echo $args['before_widget'];
|
||
|
if ( $title ) {
|
||
|
echo $args['before_title'] . $title . $args['after_title'];
|
||
|
}
|
||
|
echo '<div class="tagcloud">';
|
||
|
|
||
|
/**
|
||
|
* Filter the taxonomy used in the Tag Cloud widget.
|
||
|
*
|
||
|
* @since 2.8.0
|
||
|
* @since 3.0.0 Added taxonomy drop-down.
|
||
|
*
|
||
|
* @see wp_tag_cloud()
|
||
|
*
|
||
|
* @param array $current_taxonomy The taxonomy to use in the tag cloud. Default 'tags'.
|
||
|
*/
|
||
|
wp_tag_cloud( apply_filters( 'widget_tag_cloud_args', array(
|
||
|
'taxonomy' => $current_taxonomy
|
||
|
) ) );
|
||
|
|
||
|
echo "</div>\n";
|
||
|
echo $args['after_widget'];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param array $new_instance
|
||
|
* @param array $old_instance
|
||
|
* @return array
|
||
|
*/
|
||
|
public function update( $new_instance, $old_instance ) {
|
||
|
$instance = array();
|
||
|
$instance['title'] = sanitize_text_field( stripslashes( $new_instance['title'] ) );
|
||
|
$instance['taxonomy'] = stripslashes($new_instance['taxonomy']);
|
||
|
return $instance;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param array $instance
|
||
|
*/
|
||
|
public function form( $instance ) {
|
||
|
$current_taxonomy = $this->_get_current_taxonomy($instance);
|
||
|
$title = isset( $instance['title'] ) ? $instance['title'] : '';
|
||
|
?>
|
||
|
<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:') ?></label>
|
||
|
<input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo esc_attr( $title ); ?>" /></p>
|
||
|
<p><label for="<?php echo $this->get_field_id('taxonomy'); ?>"><?php _e('Taxonomy:') ?></label>
|
||
|
<select class="widefat" id="<?php echo $this->get_field_id('taxonomy'); ?>" name="<?php echo $this->get_field_name('taxonomy'); ?>">
|
||
|
<?php foreach ( get_taxonomies() as $taxonomy ) :
|
||
|
$tax = get_taxonomy($taxonomy);
|
||
|
if ( !$tax->show_tagcloud || empty($tax->labels->name) )
|
||
|
continue;
|
||
|
?>
|
||
|
<option value="<?php echo esc_attr($taxonomy) ?>" <?php selected($taxonomy, $current_taxonomy) ?>><?php echo esc_attr( $tax->labels->name ); ?></option>
|
||
|
<?php endforeach; ?>
|
||
|
</select></p><?php
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param array $instance
|
||
|
* @return string
|
||
|
*/
|
||
|
public function _get_current_taxonomy($instance) {
|
||
|
if ( !empty($instance['taxonomy']) && taxonomy_exists($instance['taxonomy']) )
|
||
|
return $instance['taxonomy'];
|
||
|
|
||
|
return 'post_tag';
|
||
|
}
|
||
|
}
|