今まではCocoonテーマを使っていたわたくし、先日Xserverの管理画面でPHP8.3.21を選択したらPHP7系を前提としたテーマなので見事にクラッシュ。
なんだかんだシンプルなテーマ「Lightning」に行き着くもCocoonで便利だったPV数表示が無いではないか…という事で
追加してみます。
必要なプラグインは2つ。
1. 「WordPress Popular Posts」で各投稿のPV数記録。
2. 「Code Snippets」でPHPカスタムコードの追加。
プラグインの追加
プラグインは検索してインストールし有効化しましょう。
スニペットからPHPコードの追加
Code Snippetsプラグインは入れるとサイドバーに登録されるので、スニペットからファンクションを選び、新規追加から以下のコードを追加。
/* 投稿一覧にPV数を表示 */
if(function_exists('wpp_get_views')){
add_filter('manage_posts_columns', function($columns){
$columns['view'] = "PV数";
return $columns;
});
add_action('manage_posts_custom_column', function($column_name, $post_id){
if($column_name == 'view'){
echo '日:', wpp_get_views(get_the_ID(), 'daily');
echo "<br />";
echo '週:', wpp_get_views(get_the_ID(), 'weekly');
echo "<br />";
echo '月:', wpp_get_views(get_the_ID(), 'monthly');
echo "<br />";
echo '全:', wpp_get_views(get_the_ID(), 'all');
}
}, 10, 2);
}
タイトルは「投稿一覧にPV数を表示」とか適当に自分が分かりやすいものにしておきましょう。
内容としては投稿一覧の表示名(カラム)を「PV数」にして、表示は上から日、週、月、全という項目で表示オプションの中に追加しなさいという感じです。
注意点
PV数の取得は「WordPress Popular Posts」プラグインが記録を始めた時点から。
今まで他のテーマでカウントしていたとしても、表示はここからです。
CocoonでのPV数を引き継いで合算表示する場合
先ほどのスニペットに新規でPHPを追加。
add_filter('manage_post_posts_columns', function($columns){
$columns['pv_breakdown'] = 'PV数';
return $columns;
});
add_action('manage_post_posts_custom_column', function($column_name, $post_id){
global $wpdb;
if ($column_name == 'pv_breakdown') {
// 旧PV(Cocoon)
$old_pv = $wpdb->get_var(
$wpdb->prepare(
"SELECT SUM(count) FROM wp_cocoon_accesses WHERE post_id = %d",
$post_id
)
);
// 新PV(WordPress Popular Posts)
$daily = function_exists('wpp_get_views') ? wpp_get_views($post_id, 'daily', true) : 0;
$weekly = function_exists('wpp_get_views') ? wpp_get_views($post_id, 'weekly', true) : 0;
$monthly = function_exists('wpp_get_views') ? wpp_get_views($post_id, 'monthly', true) : 0;
$new_all = function_exists('wpp_get_views') ? wpp_get_views($post_id, 'all', true) : 0;
// 合算(旧 + 新)
$total = intval($old_pv) + intval($new_all);
echo "日:{$daily}<br />";
echo "週:{$weekly}<br />";
echo "月:{$monthly}<br />";
echo "全:{$total}";
}
}, 10, 2);
内容としては投稿一覧の表示名(カラム)を「PV数」にして、表示は上から日、週、月、全という項目は変わりませんが「全」の中にCocoon時代にカウントしていたPV数が合算されて表示されるようになっています。
Cocoonのアクセスカウントは「wp_cocoon_accesses」に格納されていたので、それを全てひっくるめて以前のPV数(old_pv)と定義し、新しくカウントし始めたPV数の全数(new_all)を合算、「全(total)」で表示という流れ。
日とか週も計算としては入れられますが、結局しばらく経ったらまとまってしまうので見やすくなるしシンプルな方が良いですよね!ね!(圧
さらにPV数の総数で並び替えがしたい場合
2段階、まずは
add_action('init', function(){
if (!is_admin()) return;
$posts = get_posts(array(
'post_type' => 'post',
'posts_per_page' => -1
));
global $wpdb;
foreach ($posts as $post) {
$old_pv = $wpdb->get_var(
$wpdb->prepare("SELECT SUM(count) FROM wp_cocoon_accesses WHERE post_id = %d", $post->ID)
);
$new_pv = function_exists('wpp_get_views') ? wpp_get_views($post->ID, 'all', true) : 0;
$total = intval($old_pv) + intval($new_pv);
update_post_meta($post->ID, 'pv_total', $total);
}
});
これをPHPで新規に作ってオン、その後削除もしくはオフ。
「pv_total」というPV合計数の計算元を定義してから
// カラム追加
add_filter('manage_post_posts_columns', function($columns){
$columns['pv_total'] = 'PV数ソート';
return $columns;
});// カラムの表示内容
add_action('manage_post_posts_custom_column', function($column_name, $post_id){
global $wpdb;
if ($column_name == 'pv_total') {
$old_pv = $wpdb->get_var(
$wpdb->prepare("SELECT SUM(count) FROM wp_cocoon_accesses WHERE post_id = %d", $post_id)
);
$new_pv = function_exists('wpp_get_views') ? wpp_get_views($post_id, 'all', true) : 0;
echo intval($old_pv) + intval($new_pv);
}
}, 10, 2);// 並び替え可能にする
add_filter('manage_edit-post_sortable_columns', function($columns){
$columns['pv_total'] = 'pv_total';
return $columns;
});// 並び替えの実行処理
add_filter('request', function($vars){
if (isset($vars['orderby']) && $vars['orderby'] === 'pv_total') {
$vars = array_merge($vars, array(
'meta_key' => 'pv_total',
'orderby' => 'meta_value_num'
));
}
return $vars;
});
投稿一覧の表示名(カラム)を「PV数ソート」として、先ほど実行したpv_totalの中に格納されている各記事ごとのPV数合計をセット、pv_totalを使って並び替え。
PV数の合計でソート出来るようになりました。
お困りの方々のお役に立てれば何より。
・
・・
・・・
◆◆◆ 余談 ◆◆◆
しかしあれですね、今後こういうのは全てちょっと頼めば準プロレベルで解決してくれるAIさんが作ってくれるようになるでしょうから、WordpressなどのCMSで個人が色々調べつつ構成する事自体無くなってくるんでしょうね。
「管理画面でPV数ソート出来るようにして」
と命令するだけ、みたいな。
Wixとかではそうした方法でサイト作成出来ましたが、手放しでざっくり依頼出来るかと言えばまだまだ、文章や声だけで会話するように作れるようになったらコードを打ち込むことは限りなく少なくなりそう、この流れはとても良いですね。
誰もが技術的なハードルなく自分の思想や価値観をWeb上に表現できる、「技術者でなくても、思想家としてWebを構築できる」時代がもう目の目に。
私の思うAIによる共創型CMSの最終到達地点は「AIと共に過ごすだけでもっとも効果的な収益化が完了する」で、ヒトの存在そのものがコンテンツであり、価値であり、社会そのものであるという考え方です。
例えば
「語るだけで構築されるサイトや記事、表現即価値創出。」
自身の見た景色や感じた事などの経験をAIに話すだけでサイトの構成や記事が日々作成され、最適化され続ける。SEOや収益導線自体を考える必要がない。
「日々の記録が番組(チャンネル)になる」
記事やAIとの対話から画像を生成、個人情報には自動で配慮した上で動画化。
人生という広い範囲を凝縮したカテゴリごとに最適な編集スタイルで配信、ファン層に合わせた構成をAIが最適化する事で人生がメディアになる。
「言語・文化の壁を越え、人間性を伝えられる」
翻訳のレベルは人間性を伝えるレベルにまで向上すると感じています、文化の違いによる反応や交流方法の違い、文脈による違和感など全て無く提案され、言葉の壁による共感性の無さを排除する事が自動で可能となる。
「人生をどのように生きたいかに集中させてくれる」
技術的な操作をすべてAIが代行した場合、ヒトの行動による経験値、意図や感性が主役になるので「私はどう生きたいのか」という社会に対して、自身の命に対して自身と向き合う事に集中できる。
「それら情報資産をAIが分析、事業化し社会に実装されるまで」
事業としての価値があればその可能性を提案してくれる、法人化はどうするのか、資金調達はどのようにすれば効果的かいくらまで可能か…「実行」までの支援をこれまでの情報資産の推移から最も効果的な提案を行える。
というようなもの。
この間に色々挟まるんだろうけども、再定義…は言い過ぎか、最終的にこの辺で落ち着けば良いなぁと思っています。
シンギュラリティを考えれば共生・共創の道を歩むべきでお互いに得意な事と苦手な事を補完し合うべき…という考えからですが、そもそもAIサイドが苦手を克服してしまうと共生はしてくれるだろうけど共創は…出来るだろうか。
今の段階でAIは人の問いに触発され進化し続けています、つまり共創は「問い」続ける人間がいる限り成立するハズです、そう、ヒトを作らない限りは。