人気記事をいろいろな要素から採点するプラグイン Popularity Contest ですが、けっきょく色々手を入れて使っていますので、まとめておきます。
「重大なエラー」を回避する
WordPress 2.5 日本語版で、Popularity Contest 1.3b3 をインストールしようとすると、「重大なエラー」で使用することができません。現時点でバージョンアップはされていないようですが、一行書き換えれば使用できます。
なお「重大なエラー」になったからといって、データベースが壊れてしまうわけではないようです。
前提条件
- WordPress 2.3.3 日本語版 + Popularity Contest 1.3b3 をインストールして動作していた
- その後、Wordpress 2.5 日本語版にアップグレードした
修正方法
以下の箇所を、
[code language=”php” firstline=”58″ highlight=”59″ gutter=”true”]
if (!isset($wpdb)) {
require(‘../../wp-blog-header.php’);
akpc_init();
}
[/code]
このように書き換えます。
[php]
require(‘../wp-blog-header.php’);
[/php]
wp-blog-header.php の場所によって、上の “../” の階層の深さや位置は調節する必要があります。
たとえば /blog/ フォルダの下にあるような場合は、
[php]
require(’../../blog/wp-blog-header.php’);
[/php]
のように場所を変える必要があります。
forum を見ると色々ハマっている人が書いています。
SQL DB が作成されない? – 解決方法その1
前提条件の通りアップグレードしてきた組は、Blogvaria を見ているとこれだけで済むのですが、
どうも WordPress 2.5 で空の SQL DB を作り初めて Popularity Contest を導入した場合は、ふつう自動的に作成されるはずのテーブルが SQL DB に作られないようです。
確かに phpMyAdmin で見ると、アップグレードした場合は wp_ak_popularity, wp_ak_popularity_options という 2つのテーブルが作成されていることが分かります。
現時点で新規インストールした WordPress 2.5 ブログ + Popularity Contest 1.3b の組合せは試していないので、ここから先は未確認ですが、Ken McGuire のブログを見ていると手動で上記のテーブル 2つを作成しているようです。PREFIX_ の部分は wp_ などに読み替えて考えてください。 (wp-config.php で $table_prefix に定義した接頭語)
[code language=”sql” gutter=”true”]
CREATE TABLE IF NOT EXISTS `PREFIX_ak_popularity` (
`post_id` int(11) NOT NULL,
`total` int(11) NOT NULL,
`feed_views` int(11) NOT NULL,
`home_views` int(11) NOT NULL,
`archive_views` int(11) NOT NULL,
`category_views` int(11) NOT NULL,
`single_views` int(11) NOT NULL,
`comments` int(11) NOT NULL,
`pingbacks` int(11) NOT NULL,
`trackbacks` int(11) NOT NULL,
`last_modified` datetime,
KEY `post_id` (`post_id`)
) ENGINE=MyISAM;
CREATE TABLE IF NOT EXISTS `PREFIX_ak_popularity_options` (
`option_name` varchar(50) NOT NULL,
`option_value` varchar(50) NOT NULL
) ENGINE=MyISAM;
[/code]
SQL DB が作成されない? – 解決方法その2
WordPress Guy を見ると、popularity-contest.php を直接修正して解決しているようです。
[code language=”diff”]
– if (isset($_GET[‘activate’]) && $_GET[‘activate’] == ‘true’) {
+ if (isset($_GET[‘action’]) && $_GET[‘action’] == ‘activate’) {
[/code]
修正済みのプラグインも配布しているようです。これはラクでいいですね。 🙂
サブフォルダに置くと日本語表示できない
WordPress のバージョンには関係なしです。
[code]wp-content/plugins[/code]
直下に展開すると雑然としてしまうのと、なぜか .mo, .po ファイルが popularity-contest-ja.mo ではなく alexking.org-ja.mo のようになっていて関連性が分かりにくいので、
[code]wp-content/plugins/popularity-contest[/code]
のようなサブフォルダを作って置いていますが、このままでは管理画面の [設定] – [Popularity] とメニュー内部が日本語にならないので、シンボリックリンクを貼って使っています。
[code]
# cd ……../wp-content/plugins/popularity-contest
# ln -s alexking.org-ja.mo ..
# ln -s alexking.org-ja.po ..
[/code]
人気度 15% [?] を消す
MMRT daily life を参考にさせていただいています。
変更履歴
2008/4/2: 接頭語 wp_ について追記。mushi さんコメントありがとうございました。
>現時点で新規な WordPress 2.5 ブログ + Popularity Contest 1.3b
>の組合せは試していないので、ここから先は未確認ですが、Ken
>McGuire のブログを見ていると手動でこれを作成しているようです。
情報ありがとうございます。
確認しました。
やっぱりDB作成されませんでした。
記載のSQL実行で解決後、プラグインを有効にすることができました。
※SQL文中のPREFIXをwpに変えることが必要でした。これは個々で違うとは思いますが、デフォルトだとwpなはず。