結論
<?php
$days = '30';
$entry_count = 10;
$entry_type = ET_DEFAULT;
$ranking_visible = 0;
$pv_visible = 0;
$cat_ids = array();
$exclude_post_ids = array();
$exclude_cat_ids = array();
$records = get_access_ranking_records($days, $entry_count, $entry_type, $cat_ids, $exclude_post_ids, $exclude_cat_ids);
foreach ( $records as $record ) {
$post_id = $record->ID; //投稿ID
$post_pv_count = $records->sum_count; //投稿のPV
$post_title = $record->post_title;
echo "<a href='<?php echo get_permalink( $post_id ); ?>'"; //リンクを表示
echo get_the_post_thumbnail( $post_id ); //サムネイルを表示
echo get_the_category( $record->ID )[0]->name; //カテゴリ名を表示
}
?>
調査したこと
記述されているファイル
/cocoon-master/lib/page-access/access-func.php
最終的に何を出力しているのか
SELECT
ID, sum_count, post_title, post_author, post_date, post_modified, post_status, post_type, comment_count
FROM
({$query}) AS {$ranks_posts}
INNER JOIN {$wp_posts} ON {$ranks_posts}.post_id = {$wp_posts}.id
WHERE post_status = 'publish' AND
post_type = '{$post_type}'
get_access_ranking_recordsの最後でwrap_joined_wp_posts_query($query)というfunctionで上記のSQLを発行している
なので、上記のオブジェクトの配列が返ってくる。返ってきた各オブジェクトのプロパティは、下記のようになる。
ID (投稿ID)
sum_count (投稿のPV数)
post_author (投稿のauthor)
post_date (投稿の投稿日付)
post_modified (投稿の更新日付)
post_status (投稿のステータス 下書きとか公開とか)
post_type (投稿タイプ 投稿とか固定ページとか)
comment_count (投稿のコメント数)
[結果オブジェクト]->IDや[結果オブジェクト]->post_statusで値を取得できる。
取得した値は配列なので、foreachやforを使いループして各要素を取得する。
配列の順番がそのままPVの多い順なので、配列の最初から順番にループを回せば多い順で取得・表示できる。
<?php foreach ( $records as $record ) {
$post_id = $record->ID;
$post_pv_count = $records->sum_count; }
?>
で利用できる。
リンクがほしい場合は、
echo get_permalink( $record->ID );
アイキャッチが欲しい場合は、
echo get_the_post_thumbnail( $record->ID );
カテゴリ名が欲しい場合は、
echo get_the_category( $record->ID )[0]->name;
コメントを残す