Widget nejaktivnějších komentátorů


Jedním z prostředků může být i widget nejaktivnější komentátorů. Neaktivnější lidé získají odkaz na svůj blog a otevřou si tak cestu nejen pro nové návštěvníky, ale i větší úctu vyhledávačů. Dejte si však pozor, takový widget přináší i rizika. Lidé nebudou komentovat proto, že chtějí něco říct, ale kvůli zpětnému odkazu. Množství spamu tak může narůst.

A nyní již k samotnému kódu, který z databáze vybere 5 nejaktivnějších komentátorů. Z přehledů je vyškrtnut uživatel s ID 1. Tedy vy. Uznejte, že by to nebyla zrovna fér soutěž a dopřejte tu slávu i ostatním.

class nejaktivnejsi extends WP_Widget {

    function nejaktivnejsi() {
        parent::WP_Widget(false, $name = 'nejaktivnejsi');
    }

    function widget($args, $instance) {
        extract($args);
        $title = apply_filters('widget_title', $instance['title']);
        echo $before_widget;
        if ($title)
            echo $before_title . $title . $after_title;
        ?>
        <ul>
            <?php
            global $wpdb;
            foreach ($wpdb->get_results("SELECT COUNT(*) as komentaru, comment_author_url, comment_author
                FROM " . $wpdb->comments . "
                    WHERE comment_approved = 1 AND user_id != 1
                    GROUP BY comment_author_email
                    ORDER BY komentaru DESC
                    LIMIT 5") as $autor) {
                ?>
                <li><?php
            if ($autor->comment_author_url != '')
                echo "<a href='" . $autor->comment_author_url . "'>";
            echo $autor->comment_author;
            if ($autor->comment_author_url != '')
                echo "</a>";
                ?>
                    komentoval <?php echo $autor->komentaru ?>x</li>
                <?php
            }
            ?>
        </ul>
        <?php
        echo $after_widget;
    }

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

    function form($instance) {
        $title = esc_attr($instance['title']);
        ?>
        <p>
            <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
            <input id="<?php echo $this->get_field_id('title'); ?>"
                   name="<?php echo $this->get_field_name('title'); ?>"
                   type="text"
                   value="<?php echo $title; ?>" />
        </p>
        <?php
    }

}

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