Nejaktivnější komentující


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.


One response to “Nejaktivnější komentující”

  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.