私はウェブサイト上で人気のトレンドセクションを実装するつもりです。私はこのようなセクションを多くの人気のあるWebサイトで見ましたが、実際にこれがどのように機能するのか実際にはわかりません。
私はHot section
がカスタムWP_Query
によって開発された(投稿ビューに基づく)最も人気のある投稿であると思いましたが。そしてそれはうまくいきます。
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'meta_key' => 'post_views',
'orderby' => 'meta_value_num',
'ignore_sticky_posts' => 1,
'paged' => $paged,
);
$hot_query = new WP_Query( $args );
しかし、私はTrending section
に行き詰まっています。カスタムクエリを作成するための、その背後にある考え方は正確には何ですか。
各セクションのコンテンツを取得するための最善の方法は何ですか。私は数日間Googleで検索してみましたが、実際には何も便利なものを見つけることができませんでした。
EDIT
私の投稿ビュー機能.
function set_post_views( $postID ) {
if ( is_singular() ) {
$count_key = 'post_views';
$count = get_post_meta( $postID, $count_key, true );
if ( $count=='' ) {
$count = 0;
delete_post_meta( $postID, $count_key );
add_post_meta( $postID, $count_key, '0' );
} else {
$count++;
update_post_meta( $postID, $count_key, $count );
}
}
}
私の個人的な意見では、これは少しリソース集約的になる可能性があるので、あなたはある種のキャッシュシステムを実装する必要があるでしょう。
あなたがしたいことはあなたの現在のポストビュー機能を拡張すること、あるいはこれのために側でそれを作成することさえです。各ビューを2回キャプチャする必要があります。現在実行中の通常のページビューに対して1回($count_key
)、次におそらく$custom_count_key
を使用したカスタムビュー関数に対してです。
さて、これが$custom_count_key
のしくみです。
ページビューは、通常どおりにページ(投稿)にアクセスしたときに記録されます。
このフィールドは、Trending section
の定義方法に応じて、毎日/毎週/ etcに消去されます(すべてのデータが削除されます)。これもまた、新しい日/週/ etcの始めに値を0
に設定します。
あなたがする必要があるでしょう:
述べたように、毎日/毎週/ etcのビューを保存するために別のページビュー関数を拡張または書く
そのメタフィールドの値を削除/消去する、特定の時間に毎日/毎週/ etcで実行する関数を作成します。
特定の日/週などの最大ビュー数を持つx個の投稿をクエリするカスタムクエリを作成します。このクエリによって検索された投稿は、各ページの閲覧数がページ訪問のために増加するため、日/週/日などで異なります。
特定の日/週/ etcの終わりに現在の値を削除/消去する前に、将来の参照のために日/週/ etcからの結果をdbに保存することもできますが、それはあなた次第です。時間と空間の無駄
これは基本的な考え方です。私は今このようなコードを書く立場にはありませんが、あなたがこのアイディアを使って最終的な解決策をこれに投稿すれば、本当にうれしいでしょう。
このプロジェクトで頑張って頑張ってください
トレンドの背後にある典型的なアイデアは、最近の短い期間に人気のあるコンテンツです。コンテンツの投稿の合計ビューのみをキャプチャしている場合は、それを実装するためのデータがない可能性があります。
例えば:
Aは長い間人気がありますが、Bは現時点ではトレンドを示しています(それ以前は、Aよりも日々のトラフィックレベルが常に低い)。
投稿の生涯にわたる見解だけではなく、「ローリング」な値を伝えることができるようになる必要があるでしょう。
傾向は2つの値の間を使用して行われます。
例
そしてホットページ
私は今、私は携帯から来ているコードを投稿することはできません、私は私のコミックサイトでこれを使いました
@cybmetaが言ったように...あなたはあなたが望むようにトレンドを定義することができます。しかし、私はあなたが傾向の投稿にソーシャルシェアの値を使用することを検討するべきであると思います。ソーシャルシェアプラグインを使用している場合は、そこから値を抽出できます。
トレンドページクエリ
$today = getdate();
$args = array(
'meta_key' => 'post_views',
'meta_value' => '1000',
'meta_compare' => '>=',
'orderby' => 'meta_value_num',
'ignore_sticky_posts' => 1,
'paged' => $paged,
'date_query' => array(
array(
'year' => $today['year'],
'month' => $today['mon'],
'day' => $today['mday'],
),
),
);
$trenquery = new WP_Query( $args );
ホットページのクエリは同じでメタ値3000以上であるべきです。このコードは今日のトレンドです。このコードは私のサイトでテストされ、動作しています、そして私も週、月、そしてすべての時間で追加