閃きは大事だw

閲覧数: 33(0)

このサイトは、あくまでもCMSであるWordPressの構築やクラウドであるAWSの運用ノウハウ取得が目的であって、投稿そのものには大した意味はないのだけれど、そうは言っても投稿した記事がどのぐらい見られているか気になるので「閲覧数を記録してみる」で書いたように、プラグインを使って閲覧数を記録している。「今週のトップ10」(現在はトップ5)では週単位での集計結果を表示できるようにしたりしている。

この週単位の集計の際に、結果重視と言うことでページの右下に表示される「今週のトップ5」の表示を中心にコードを改変したため、管理画面の投稿一覧では総合計が週単位の集計となり、本来の総合計での並べ替えが出来なくなっていた。

修正したコードを再掲する。まずは修正前から、これがオリジナルのコードで、ループの中で「並べ替え」が選ばれていると、queryの条件として「’ AND pvc.type = 4’」が追加される仕様となっている。

// is it sorted by post views?
if ( ( $sql === '' && isset( $query->pvc_orderby ) && $query->pvc_orderby ) || apply_filters( 'pvc_extend_post_object', false, $query ) === true )
    $sql = ' AND pvc.type = 4';

これまでの集計では、この部分を以下のように変更して、週単位の集計による並べ替えを実現している。これはサイトの右下にあるウィジェットによる表示結果に影響を及ぼす事になる。この変更を行わないと、投稿の並び順は総合計で行われてしまい「今週のトップ5」が実現できなくなる。

// is it sorted by post views?
$datew = date( 'oW' ); 

if ( ( $sql === '' && isset( $query->pvc_orderby ) && $query->pvc_orderby ) || apply_filters( 'pvc_extend_post_object', false, $query ) === true )
    $sql = ' AND pvc.period = ' . $datew;

一方でこの変更を行うと、前述の通り、管理画面の投稿一覧も週単位の集計となってしまう。今回はこの部分を解決したいと思う。サイトの右下のウィジェットによる「今週のトップ5」は残したい、管理画面の投稿一覧は総合計で並べ替えたい。これが今回の要件である。結論から言うと、実現方法はとても単純で、現在管理画面にいるかどうかの判定に使う「is_admin()」を使う。今日までなんで閃かなかったんだろうw

// is it sorted by post views?
$datew = date( 'oW' ); 

if ( ( $sql === '' && isset( $query->pvc_orderby ) && $query->pvc_orderby ) || apply_filters( 'pvc_extend_post_object', false, $query ) === true ) {
    if ( is_admin() ) {
        $sql = ' AND pvc.type = 4';
    } else {
        $sql = ' AND pvc.period = ' . $datew;
    }
}

シンプルな解決策で気に入っています。

カテゴリーIT閑話, 公開タグ, , ,
閲覧数の記録’18

引き続き、新しいテーマのカスタマイズ対応です。今回は「閲覧数」です。過去記事「閲覧数を記録してみる」  続きを読む

Simple Author Box
blank

「この記事を書いた人」を表示するプラグイン。これまでは「Fancier Author Box」を使用  続きを読む

今週のトップ10
blank

前回の「閲覧数を記録してみる」で記事の閲覧記録を取ることには成功しましたが、このプラグインでは細かい  続きを読む

閲覧数まとめ
blank

閃きついでに総合計と週合計をフラグで制御する方式に変更してみた。これまではベタに関数をまるまるコピー  続きを読む

閲覧数を記録してみる
blank

いろいろ便利なプラグインがあるので、いくつか試してみて、最終的に採用したのが、Post Views  続きを読む

テーマリニューアル2017
blank

すっかりご無沙汰してしまいました。 復帰記念に久しぶりにテーマを変更しました。今回使用するのは「ob  続きを読む

スポンサーリンク

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください