プラグイン 最も人気のある投稿 は _ wpml _ をサポートしていないので、自分で作成してみました。
私のサイトで最も人気のある投稿を表示するためのあなた自身のコードを作成することで私はこのチュートリアルを見つけました: プラグインなしでWordPressでビューによって人気の投稿を表示する方法
しかし、これは週当たりの要素を考慮に入れていません。これをどのように行うかについて正しい方向を向いてほしいのです。
このコードは投稿の実際のビュー数を更新します。
function wpb_set_post_views($postID) {
$count_key = 'wpb_post_views_count';
$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);
}
}
//To keep the count accurate, lets get rid of prefetching
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
投稿にこれらのフィールドを追加します。
week_count: integer
current_week: datetime
current_week
が実際の今週と一致するかどうかを確認します。それ以外の場合はweek_count
をリセットして1を加算し、current_week
を実際の今週に設定します。
よりスマートでより効率的な方法でこれを行う別の方法はありますか?
さて、これが今週の人気記事を表示するための完全なクエリです。 meta_query
を使用して、今週中にのみクエリ結果を制限します。
今週のすべての投稿を取得し、質問で使用したカスタムフィールドwpb_post_views_count
で追加された投稿ビュー数でそれらを並べ替えます。
// Current week's popular posts
$query_args = array(
'post_type' => 'post',
'date_query' => array(
array(
'year' => date( 'Y' ),
'week' => date( 'W' ),
),
),
'meta_key' => 'wpb_post_views_count',
'orderby' => 'meta_value_num',
'ignore_sticky_posts' => 1,
'posts_per_page' => '-1',
);
$my_query = new WP_Query( $query_args );
if ( $my_query->have_posts() ) :
while ( $my_query->have_posts() ) : $my_query->the_post();
// add your loop content here.
endwhile;
endif;
wp_reset_postdata();