web-dev-qa-db-ja.com

Stats_get_csvを使用して、サムネイル付きのビュー別に人気のある投稿のリストを返す

私は最近あなたがWordPress.com Statsをインストールしているなら、あなたがstats_get_csv()を利用できることを学びました( WordPress.com Statsプラグインの一部 )。

<?php if ( function_exists('stats_get_csv') && $top_posts = stats_get_csv('postviews', 'days=-1&limit=4') ) : ?>
    <ol>
<?php foreach ( $top_posts as $p ) : ?>
        <li><a href="<?php echo $p['post_permalink']; ?>"><?php echo $p['post_title']; ?></a></li>
<?php endforeach; ?>
    </ol>
<?php endif; ?>

これで私は自分のコードを設定しました。問題は、それがページと投稿を表示することです。また、各アイテムの横におすすめのサムネイルを追加し、カスタム投稿タイプの配列も追加します。これは可能ですか?もしそうなら、誰かが私を手伝ってくれる?

2
jwp

postviewsテーブルを照会すると、APIは以下の列を返します。

  • 日付
  • post_id
  • 記事のタイトル
  • post_permalink
  • ビュー

私のブログでは、post_id列は空または0(ホームページ用)でした。それで、そこに良い値がなければ、post_permalink値から作業し、それがページなのか投稿なのかを判断し(データベースのクエリかURLの正規表現を使って)、それからデータベースに対してなぜなら、WordPress.com統計APIはそれに関する情報を収集していないからです。

3
Jan Fabry

WordPress.com Stats APIは現在post_typeフィルタを提供していません。あなたは多くの方法のうちの1つであなた自身を実装することができます。基本的な考え方は、post_idをループして、どのpost_typepostであるかを調べることです。あなたのループでは、このようなものを使うことができます:

$post = get_post($p['post_id']);
if ( !isset($post->post_type) || $post->post_type != 'post' )
    continue;
if ( has_post_thumbnail( $post->ID ) )
    $thumbnail = get_the_post_thumbnail( $post->ID );
else
    $thumbnail = '';
2
Andy

除外ページについては、ほんの数ページしかない場合は、ここで説明されているように できます

Foreachループの内側、<li>を追加する前に、

 $postTitle = $single_post['post_title'];
    if($postTitle == 'Home page') {
1
Lea Cohen