jetpackの統計情報から記事ランキングウィジェットを作る

どうにもデータベースへの接続が悪いサイトがあって、なんでだろ?と思ってデータベースを覗いてみたら、かなり色々溜まってたので整理ついでにデータベースを使わない記事ランキングのウィジェットを作りました。

広告

Jetpack for WordPress の統計情報からランキングウィジェットを作る

いきなりですが、コードはこんな感じ。

class My_Widget2 extends WP_Widget {
function __construct() {
$widget_ops = array('description' => 'ランキング記事');
parent::__construct(
false,
'ランキング記事',
$widget_ops
);
}
function widget($args, $instance) {
        ?>
<?php $top_posts = stats_get_csv('postviews', "days=3&limit=7"); ?>
<?php if ( $top_posts ) : ?>
            <h3 class="ranking">記事ランキング</h3>
            <ul class="ranking-list">
<?php foreach($top_posts as $post): ?>
<?php $post_obj = get_post($post['post_id']);
    $npid = get_the_ID(); ?>
<?php if (isset($post_obj) && $post_obj->ID != $npid): ?>
        <li>
                   <a href="<?php echo get_permalink( $post_obj->ID ); ?>">
                    <?php if( has_post_thumbnail($post_obj->ID)) : ?>
                    <?php
                    $image_id = get_post_thumbnail_id($post_obj->ID);
                    $image_url = wp_get_attachment_image_src($image_id, true);
                    ?>
                    <span class="ranking-box"  style="background:url(<?php echo $image_url[0]; ?>) no-repeat 50% 50% / auto 100%;"></span>
                <?php else: ?>
          <span class="ranking-box"  style="background:url(http://threelegs.jp.net/wordpress/wp-content/uploads/2014/05/torisukiu1.png) no-repeat 50% 50% / auto 100%;"></span>
                    <?php endif; ?>
        <h2><?php echo get_the_title( $post_obj->ID ); ?></h2>
                    </a>
                </li>
<?php endif; ?>
<?php endforeach; wp_reset_postdata(); ?>
        </ul>
<?php endif; ?> 
        <?php
}
function update($new_instance, $old_instance) {
return $new_instance;
}
function form($instance) {
}
}
add_action('widgets_init',create_function('', 'return register_widget("My_Widget2");'));

ちょっと雑に書きました。スイマセン。
簡単に説明すると、ジェットパックのデータから情報を取得して配置するだけですw
強いて言えば、出力したときの投稿記事とかぶる記事は省くようにifで条件付けます。

人気のあるポピュラーポストでも良かったんですが、どうにかデータベースを軽くして原因を探りたかったのでこーゆーの作りました。jetpack使ってる人にお勧め。

これは当テーマには入ってませんので、書きたい人は自分で書いて

広告

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です