it-swarm.com.de

Widget zum Anzeigen der benutzerdefinierten Taxonomie-Tag-Cloud

Wie ändere ich das Standard-Widget, um eine Tag-Cloud einer benutzerdefinierten Taxonomie anzuzeigen?

Keine, aber Sie können ganz einfach Ihre eigenen erstellen:

<?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'));
    }
}
?>

ändern Sie einfach: 'Ihr Widget-Titel' mit Ihrem Titel und Ihre 'Taxonomie hier' mit dem Namen Ihrer Taxonomie.

sie können das Erscheinungsbild ändern, indem Sie weitere Argumente in den $ cloud_args aus der großen Liste im Codex übergeben.

Hoffe das hilft.

4
Bainternet

Die vorhandene Antwort hier ist ausgezeichnet, aber leider aufgrund des Alters der Antwort funktioniert es nicht für neuere Versionen von WordPress.

Der folgende Code verbessert sich auf zwei Arten:

1 - Dies ist die empfohlene/Best Practice-Methode für neuere Versionen von WordPress ab Version 2.8

2 - Sie können die Taxonomie über die Dashboard-Widget-Oberfläche auswählen, anstatt sie fest zu codieren.

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>';
    }
}

Technisch gesehen können Sie dies einfach zur Funktionsdatei Ihres Themas hinzufügen. Ich bevorzuge es jedoch, sie in eine separate Designdatei (z. B. widgets.php) zu packen und diese Datei in die Funktionsdatei aufzunehmen.

0
cale_b