Nejaktivnější komentující

V rubrice: Tipy & Triky | Obtížnost:

Dnešní tip je widget pro nejaktivnější komentátory. Jeden podobný už zde byl k vidění, ale ten dnešní má nový grafický kabát. Nevypisuje se totiž textově, ale graficky v podobě gravatarů.

Na škodu je, že pořád velká část lidí dosud neví, jak si takový gravatar zařídit a tudíž se může stát, že namísto mixu osobností to bude jen hromada bezduchých panáků.

Trochu může pomoci návod „Jak v komentářích zobrazit avatara z Twitteru“, ale obecně platí, že kdo má Twitter, má i gravatar.

A samotný snippet pro widget:

class komentatoriWidget extends WP_Widget {

    function komentatoriWidget() {
        parent::WP_Widget(false, $name = 'Nejaktivnější komentátoři');
    }

    function widget($args, $instance) {
        extract($args);
        $title = apply_filters('widget_title', $instance['title']);
        $pocet = $instance['pocet'];
        echo $before_widget;
        if ($title)
            echo $before_title . $title . $after_title;
       	global $wpdb;
		foreach($wpdb->get_results("
		    SELECT *, COUNT(*) as komentaru
		    FROM ". $wpdb->comments ."
		    WHERE comment_approved = 1 AND user_id NOT IN (1)
		    GROUP BY comment_author_email
		    ORDER BY komentaru DESC
		    LIMIT " . $pocet) as $comment){
		    $url = $comment->comment_author_url;
		    if($url != '') $element = "a";
		    else $element = "span";
		    echo "<". $element ." ";
		    if($url != "") echo "href='". $url ."'";
		    echo "title='". $comment->comment_author .", komentoval ". $comment->komentaru ."x' alt='". $comment->comment_ID ."'>" . get_avatar($comment, 63) . "</". $element .">";
		  };
        echo $after_widget;
    }

    function update($new_instance, $old_instance) {
        $instance = $old_instance;
        $instance['title'] = strip_tags($new_instance['title']);
        $instance['pocet'] = $new_instance['pocet'];
        return $instance;
    }

    function form($instance) {
        $title = esc_attr($instance['title']);
        $pocet = esc_attr($instance['pocet']);
        ?>
        <p>
            <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
            <input class='widefat' id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
        </p>
        <p>
            <label for="<?php echo $this->get_field_id('pocet'); ?>"><?php _e('Počet komentujících:'); ?></label>
            <input class='widefat' id="<?php echo $this->get_field_id('pocet'); ?>" name="<?php echo $this->get_field_name('pocet'); ?>" type="text" value="<?php echo $pocet; ?>" />
        </p>
        <?php
    }

}

add_action('widgets_init', create_function('', 'return register_widget("komentatoriWidget");'));

Na co je dobré upozornit? Velikost obrázků si můžete upravit ve funkci get_avatar. Pozor, Twitter profily mají maximální velikost 73×73, takže abyste to nepřehnaly. V SQL příkazu si ještě všimněte „user_id NOT IN (1)“. Zde je nutné vypsat ID všech uživatelů, které nechcete vypisovat. Zpravidla to jste vy, jako administrátor, s ID 1.

Nemusí vypisovat nejaktivnější. Stačí úprava SQL příkazu a zobrazovat lidi lze náhodně.

SELECT *, COUNT(*) as komentaru
FROM ". $wpdb->comments ."
WHERE comment_approved = 1 AND user_id NOT IN (1)
GROUP BY comment_author_email
ORDER BY RAND()
LIMIT " . $pocet

A k čemu to všechno? Jako malá odměna těm, kteří se vám rozhodnou něco okomentovat. Či pro nálety spamerů. Záleží, jak na to nahlížíte.

V rubrice: Tipy & Triky | Obtížnost:

Komentáře

  1. Moc hezký plugin. Všiml jsem si, že díky němu mám i backlink z google, takže to třeba navede lidi, aby více komentovali články. Také zvažuji jeho nasazení.
    Jinak pro ostatní – v odkazu mám velice jednoduchý návod, jak si vložit vlastní avatar pro WordPress komentáře.

Comments are closed.