web-dev-qa-db-ja.com

注文投稿ビュー

私は私の投稿(ホームページ、検索ページ、アーカイブページ)用のフィルタリストを作りたいのですがこれが私が探しているものの例です。

並べ替え: - 日付(/?orderby =日付) - ランダム(/?orderby = Rand) - ビュー(ここで私はorderby =ビューまたはそのようなものが必要です)

このコードを使用して投稿ビューをカウントして表示しています。

// Count views
function setPostViews($postID) {
  $count_key = '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);
  }
}

// Show views
function getPostViews($postID) {
  $count_key = 'post_views_count';
  $count = get_post_meta($postID, $count_key, true);
  if($count=='') {
    delete_post_meta($postID, $count_key);
    add_post_meta($postID, $count_key, '0');
    return "0 View";
  }
  return $count.' Views';
}

// Show views in WP-Admin
add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views', 5, 2);
function posts_column_views($defaults) {
  $defaults['post_views'] = __('Views');
  return $defaults;
}
function posts_custom_column_views($column_name, $id){
  if($column_name === 'post_views') {
    echo getPostViews(get_the_ID());
  }
}

これは可能ですか?

2
Hank Scorpio

メタキーを使用して、ビュー番号でクエリを並べ替えることができます。

$query = new WP_Query( 
            array( 
                'meta_key' => 'post_views_count',
                'orderby' => 'meta_value_num',
                'order' => 'DESC',
            ) 
        );

これは意見に基づいてあなたの投稿を照会します。 DESCASCまたはRandに変更して、要求したことを達成できます。

それを動作させるために、あなたはあなたのクエリをフィルタするためにpre_get_posts()を使うことができます。テーマのfunctions.phpファイルでこのピースコードを使用してください。

add_action( 'pre_get_posts', 'my_view_filter' );
function my_view_filter($query){
    if ( 
        !is_admin() && 
        $query->is_main_query() && 
        ( $query->is_home() || $query->is_archive() || $query->is_search() )
    ) {
        if (isset($_REQUEST['orderby'])) {
            $order = $_REQUEST['orderby'];
        }
        if ( $order === 'views') {
            $query->set('meta_key', 'post_views_count');
            $query->set('orderby', 'meta_value_num');
            $query->set('order', 'DESC');
        }
    }
}

http://example.com/?orderby=viewsにアクセスするたびに、投稿数はビューの数で絞り込まれます(降順、希望のものに変更できます)。

2
Jack Johansson