任意の日数でのコンテンツのページビューをランキングする関数

追記
WP-PostViewsというプラグインを入れてからfunction.phpにて以下を実装。

if (!function_exists('postview_cus')) {
  function postview_cus($days){ //一定期間分のページビューをカウントする関数
    global $post;
    $views=get_post_meta($post->ID,'views',true); //Post viewsから値を取得
    if(!$views){ //ページビューがない場合
      return 0;
    }
    else{ //値がある場合
      $date=date('Y-m-d');
      $views_cus=get_post_meta($post->ID,'views_cus',true);
      //$timestamp1 = strtotime($date);
      //$timestamp2 = strtotime($views_cus_array[0]);
      if(!$views_cus){ //ページビューはあるけどカスタムページビューがないときに生成
        for($i=0;$i<$days+2;$i++){
          $views_cus_array[$i]=0;
        }
        $views_cus_array[0]=$date;
        $views_cus_array[$days+2]=$date;
/*        $views_cus=implode(',',$views_cus_array);
        update_post_meta($post->ID,'views_cus',$views_cus);
        $views_cus=get_post_meta($post->ID,'views_cus',true); */ //取得し直す
        //echo 's0';
      }
      $views_cus_array=explode(',',$views_cus);
      $daydiff = (strtotime($date)-strtotime($views_cus_array[0]))/(3600*24); //現在の日付と配列一つ目の日付の日数を取得
      if(count($views_cus_array)>=11 or $daydiff<0 or count($views_cus_array)<10){
        $views_cus_array=array($date,1,0,0,0,0,0,0,0,$date);
      } //間違った値の場合初期化 というか何故かカスタムフィールドの値がバラバラなので初期化させます
      //print_r($views_cus_array);
      //echo '<br>'.$daydiff.'<br>';
      //日付がマッチするかどうか判定
      if($daydiff+1>$days){
        $views_cus_array[0]=$date;
        $views_cus_array[$days+1]=$views_cus_array[$days+1]+$views_cus_array[$days];
        $views_cus_array[1]=0;
        $views_cus_array[$days+2]=$date;
      }
      elseif($views_cus_array[$days+2]!=$date){
        $views_cus_array[$days+1]=$views_cus_array[$days+1]+$views_cus_array[$daydiff];
        $views_cus_array[$daydiff+1]=0;
        $views_cus_array[$days+2]=$date;
      }
      if($daydiff<=$day){
        $views_cus_array[$daydiff+1]++;
      }else{
        $views_cus_array[1]++;
      } //今日の日付の配列に1をたす
      for($i=1;$i<$days+1;$i++){
        $views_term_sum=$views_term_sum+$views_cus_array[$i];
      }
      $views_cus=implode(',',$views_cus_array);
      //echo $views_cus.'<br>';
      //echo $views_term_sum;
      update_post_meta($post->ID,'views_cus',$views_cus);
      update_post_meta($post->ID,'views_term_sum',$views_term_sum);
    }
  }
}

以上を実装するとカスタムフィールドに2つ関係フィールドが出来るので(アクセスがあれば)、後はそれを見て何とかする
要は$day(1週間として)で取得した日数分、配列の値を生成+最初のアクセスの日付、現在の日付を生成。あとアクセス分の7日間の合計も。
んで日付が過ぎたら次の値へ移行。$day分の日数が過ぎたら最初のアクセスの日付を設定しなおしてループです。多分バグは無いと思いますが、使う人はテストを重ねてね。
日付の所に任意の値を入力していけばテストできます。
追記ここまで

新着記事、1週間(日数指定可能)の人気記事、全期間の人気記事のプログラム完成。
多分いけてると思うんだけど数日バックグラウンドで挙動を様子見。
どっちにしても何日かしないとログたまらないしね。WordPress用の関数として別ブログで掲載しようかと。かなり良く出来てる感じ。今までこーいう機能を実装した記事も読んだことがないし。
おおまかに書くとこんな感じ。
WP-PostViewsってプラグインは全期間のページビューを取得してカスタムフィールドに入れてくれるんだけど、これを利用して関数をゴニョゴニョと。
これでようやくトップページの事に取り掛かれそうです。
トップページはいくつかのピックアップ記事を掲載する予定。
大体週替りで5~10本くらい?
あとチャロチャロ様から頂いている初心者向けの資料とか、基本的には初心者向のためになりそうな感じの記事を入口として掲載したいなと。
あとスレッドが立ってくれば(というかコテヤンが立てちゃいますが)、ピックアップのスレッドやその他寄稿記事等々も載せていきたいなと。
現在コテヤンは「魔王と勇者の経済対策」ってSSを執筆中です。もう少し推敲して、サイトが完成したら寄稿記事カテゴリで寄稿していく予定です。
あとholyfireworkさんも寄稿予定?!
他にもブログで発信している記事とは違う、当サイトへのオリジナルな寄稿は大歓迎!
勿論ブログで書いたものを「この記事寄稿するわ~」というのも大歓迎!
また推薦図書等々もサイトが完成したら充実させていきたいなと。
あと細かい部分(例えば推薦図書カテゴリは記事一覧に画像も載せてよ!とか)は随時改良していきますのでサイト要望受付所にて。
あとコメントフォームへ飛べるリンク付けなきゃね…下に来すぎててスクロールめんどい(´・ω・`)ショボーン
ところでブルーオーシャンはブログランキングに参加できるんだろうか?
多分ムリ?

疲れたぉ。
書いた週間ページビューのプログラムのバグ出し完了。なんでこうなった的なバグがちょっとありましたwww
んで完成してよく見てみるといじればこのプログラム単体でもページビューカウントできますわ…(´・ω・`)ショボーン
まぁいいか…的な?一応プラグインも総ページビューを表示するのに必要ですしお寿司。

うぇ~い、やっとこさ週間ページビュー、総合ページビュー、新着順にする機能を実装したじぇ。
最近他のクライアントサイトの大幅修正とかで時間が全然取れなかったのですm(_ _)m
多分バグはない、ないはず(汗
現在ガラケー用の機能もちょっと検討中。結構むずい。ま、なんとかなるでしょ(楽観
んでガラケー用はちょっと後にするとして、ついにサイトトップページをいじれる日がやってまいりましたっとwwwwwwwwwwキタ━(゚∀゚)━!
まぁ基本機能の9割は実装済み、むしろテスト稼働してるのがおかしいじぇ?
ということで明日からはトップページにピックアップ記事になり何なりを表示していく機能を実装するじぇwwwなんとか8月中に終わりそうな気がしてきた。
あと、会員登録してくださった方々に感謝感謝。
まさかまさかのテスト稼働中に22名超えるとは思ってなかったんですよ。せいぜい10名位だろうなとヽ(=´▽`=)ノ
ガラケー向けのカスタマイズ、管理画面のカスタマイズはちと正式かどうしてからでもいいですか?というかそうします。どっちも結構作業量がいるので…
なんとか検討をして作業量の見積は出てるんだけど、これ本気でやっちゃうとオープンが10月くらいになっちゃうwwww
まぁオープンした後に頑張るよ。
今日は休日なのに疲れたぉwwwww関数一日中弄んでいたぉwwwwwということで今日の進捗状況の報告終了。ちゃんちゃんと。

コメントを残す

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