WordPress 2.5: Popularity Contest が「重大なエラー」になる / 日本語表示できない


人気記事をいろいろな要素から採点するプラグイン 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 さんコメントありがとうございました。


1 Comment

  1. >現時点で新規な WordPress 2.5 ブログ + Popularity Contest 1.3b
    >の組合せは試していないので、ここから先は未確認ですが、Ken
    >McGuire のブログを見ていると手動でこれを作成しているようです。

    情報ありがとうございます。
    確認しました。
    やっぱりDB作成されませんでした。
    記載のSQL実行で解決後、プラグインを有効にすることができました。

    ※SQL文中のPREFIXをwpに変えることが必要でした。これは個々で違うとは思いますが、デフォルトだとwpなはず。

Leave a Reply

© 2017 Nire.Com

Theme by Anders NorenUp ↑