このブログの人気エントリーを表示するようにしてみました。
またもや、こちらの記事を参考にさせてもらいました。ありがとうございます。
自分が使っているのはXOOPS版のWordPressです。
リンク先の改造で、WordPressのテンプレートに記述すれば、一応人気記事は出せたのですが、どうせなら右サイドとかのブロックに表示したい。
ところが、XOOPSのブロックからmy-hacks.phpにはアクセスできなさそう(たぶん。まだ、PHPとかXOOPSの仕組みがよくわかってません)。
それで、アクセス数をカウントする部分はそのまま使い、表示の部分は独自に作ることにしました。
ちなみにアクセス数をカウントする部分はcomments-template.phpの頭に「<?php add_count($post->ID); ?>」を入れました。
で、表示部分がこれ↓
$conn = mysql_connect(“localhost”,”user”,”password”);
mysql_select_db(“xoops”);
$sql = ‘select m.postnumber, m.cntaccess ,p.post_title FROM xoops_wp_mostAccessed m INNER JOIN zopps_wp_posts p ON m.postnumber = p.ID ORDER BY m.cntaccess DESC LIMIT 10’;
$res = mysql_query($sql);$rank=0;
while ($value = mysql_fetch_assoc($res)) {
$rank = $rank + 1;
echo $rank.”.<a href=”https://a-tak.com/xoops/modules/wordpress/index.php?p=”.$value[“postnumber”].”&more=1&c=1″>”.$value[“post_title”].”(“.$value[“cntaccess”].” Hit)</a><br/>”;
}
これを、XOOPSのカスタムブロックに入れて表示させてます。
本当はXOOPSで用意されている仕組みを使いたかったけど、正直よくわからんかったので、独自にSQLにアクセスさせてます。
でも、せっかくだからXOOPSの流儀に従おうと思ってググったら、こんなサイト見つけました。
それを参考に作り直したのがこれ。
global $xoopsUser,$xoopsDB;
$sql = “select m.postnumber, m.cntaccess ,p.post_title FROM “.$xoopsDB->prefix(‘wp_mostAccessed’).” m INNER JOIN “.$xoopsDB->prefix(‘wp_posts’).” p ON m.postnumber = p.ID ORDER BY m.cntaccess DESC LIMIT 10″;
$res = $xoopsDB->query($sql);
$rank=0;
while($value = $xoopsDB->fetchArray($res)){
$rank = $rank + 1;
echo $rank.”.<a href=”https://a-tak.com/xoops/modules/wordpress/index.php?p=”.$value[“postnumber”].”&more=1&c=1″>”.$value[“post_title”].”(“.$value[“cntaccess”].” Hit)</a><br/>”;
}
最初、いくらやっても真っ白なページしか出なくて、行き詰まりかけてましたが、「global $xoopsUser,$xoopsDB;」の一行が抜けていました。
まだ、よくわかってませんが、おまじない的に入れておきました。
とりあえず今のところちゃんと動いてるみたいなんで、よしとしておきます。