Comment modifier le widget par défaut pour afficher un nuage de tags d'une taxonomie personnalisée?
Je n'en connais pas, mais vous pouvez facilement créer le vôtre:
<?php
add_action("widgets_init", array('Widget_Custom_tax_tag_cloud', 'register'));
class Widget_Custom_tax_tag_cloud {
function control(){
echo 'No control panel';
}
function widget($args){
echo $args['before_widget'];
echo $args['before_title'] . 'Your widget title' . $args['after_title'];
$cloud_args = array('taxonomy' => 'Your taxonomy here');
wp_tag_cloud( $cloud_args );
echo $args['after_widget'];
}
function register(){
register_sidebar_widget('Widget name', array('Widget_Custom_tax_tag_cloud', 'widget'));
register_widget_control('Widget name', array('Widget_Custom_tax_tag_cloud', 'control'));
}
}
?>
il suffit de changer: "Votre titre de widget" avec votre titre et Votre "taxonomie ici" avec le nom de votre taxonomie.
vous pouvez modifier l'aspect et la convivialité en transmettant plus d'arguments dans le $ cloud_args à partir de la liste volumineuse du codex
J'espère que cela t'aides.
La réponse existante est excellente, mais malheureusement, en raison de l’âge de la réponse, elle ne fonctionne pas pour les nouvelles versions de WordPress.
Le code ci-dessous s’améliore de deux manières:
1 - Il s’agit de la méthode recommandée/de meilleure pratique pour les nouvelles versions de WordPress, à compter de version 2.8
2 - Il vous permet de sélectionner la taxonomie via l'interface du tableau de bord, plutôt que de la coder en dur.
add_action( 'widgets_init', 'custom_register_plugin_widget' );
function custom_register_plugin_widget() {
register_widget( 'Widget_Custom_Tax_Tag_Cloud' );
}
/**
* New "best practice" is to extend the built-in WP_Widget class
*
* Class Widget_Custom_tax_tag_cloud
*/
class Widget_Custom_Tax_Tag_Cloud extends WP_Widget {
function __construct() {
parent::__construct( 'custom_tax_tag_cloud', 'Custom Taxonomy Tag Cloud', array( 'description' => 'Display a tag cloud for a custom taxonomy.' ) );
}
/**
* Allows for manipulation, calculation, etc. when saving the widget instance in the dashboard.
*
* @param array $new_instance
* @param array $old_instance
*
* @return array
*/
function update( $new_instance, $old_instance ) {
return $new_instance;
}
/**
* Echos the widget contents in a sidebar
*
* @param array $args - the general widget arguments
* @param array $instance - the settings for this specific widget
*/
function widget( $args, $instance ) {
echo $args['before_widget'];
echo $args['before_title'] . 'Your widget title' . $args['after_title'];
$cloud_args = array( 'taxonomy' => 'catalogtag' );
wp_tag_cloud( $cloud_args );
echo $args['after_widget'];
}
/**
* Render the "Controls" in the dashboard menu under Appearance => Widgets
*
* @param array $instance - the settings for this instance of the widget
*
* @return null
*/
function form( $instance ) {
$instance = wp_parse_args( (array) $instance, array( 'title' => '', 'taxonomy' => 'post_tag' ) );
// Load the list of taxonomies available
$taxonomies = get_taxonomies( array( 'public' => TRUE , 'show_tagcloud' => TRUE), 'objects' );
echo '<p><label>Title</label><input name="' . $this->get_field_name( 'title' ) . '" id="' . $this->get_field_id( 'title' ) . '" value="' . esc_attr( $instance['title'] ) . '" /></p>';
echo '<p><label>Taxonomy</label><select name="' . $this->get_field_name('taxonomy') . ' id="' . $this->get_field_id('taxonomy') . '">';
echo '<option value="">Select Taxonomy...</option>';
foreach($taxonomies AS $tax) {
echo '<option value="' . $tax->name . '"';
echo ($tax->name == $instance['taxonomy']) ? ' selected' : '';
echo '>';
echo ( ! empty($tax->labels->singular_name)) ? $tax->labels->singular_name : $tax->label;
echo '</option>';
}
echo '</select></p>';
}
}
Techniquement, vous pourriez simplement ajouter ceci au fichier de fonctions de votre thème, mais j'ai tendance à préférer le placer dans un fichier de thème séparé (tel que widgets.php
, et l'inclure dans le fichier de fonctions.