Nire.Com

www.nire.com - 1994年からやってる個人サイト、にれ.コム。サーバ構築、携帯、ゲーム、水泳、目の話とか。
2008 年 4 月 1 日

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 日本語版にアップグレードした

修正方法

Line 58:

 if (!isset($wpdb)) {
- require('../../wp-blog-header.php');
+ require('../wp-blog-header.php');

  akpc_init();
}

wp-blog-header.php の場所によって、上の “../” の階層の深さや位置は調節する必要があります。
たとえば /blog/ フォルダの下にあるような場合は、

+ require(’../../blog/wp-blog-header.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_ などに読み替えて考えてください。1

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;

SQL DB が作成されない? - 解決方法その2

WordPress Guy を見ると、popularity-contest.php を直接修正して解決しているようです。

- if (isset($_GET['activate']) && $_GET['activate'] == 'true') {
+ if (isset($_GET['action']) && $_GET['action'] == 'activate') {

修正済みのプラグインも配布しているようです。これはラクでいいですね。 :-)
 

サブフォルダに置くと日本語表示できない

Wordpress のバージョンには関係なしです。

wp-content/plugins

直下に展開すると雑然としてしまうのと、なぜか .mo, .po ファイルが popularity-contest-ja.mo ではなく alexking.org-ja.mo のようになっていて関連性が分かりにくいので、

wp-content/plugins/popularity-contest

のようなサブフォルダを作って置いていますが、このままでは管理画面の [設定] - [Popularity] とメニュー内部が日本語にならないので、シンボリックリンクを貼って使っています。

# cd ......../wp-content/plugins/popularity-contest
# ln -s alexking.org-ja.mo ..
# ln -s alexking.org-ja.po ..

人気度 15% [?] を消す

MMRT daily life を参考にさせていただいています。

変更履歴

2008/4/2: 接頭語 wp_ について追記。mushi さんコメントありがとうございました。


  1. wp-config.php で $table_prefix に定義した接頭語 [back]

関連する投稿

「Wordpress 2.5: Popularity Contest が「重大なエラー」になる / 日本語表示できない」へのコメント/トラックバック (7)

  1. mushi は言いました:
    2008 年 4 月 2 日 4:04 PM

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

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

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

トラックバック

  1. Opheliam
  2. Popularity Contestのバグ原因判明 - WordPressで企業サイト
  3. 「Popularity Contest」 設置説明 WPプラグイン | 頭脳外部メモリー 「独学で趣味を満喫」
  4. こみっと秋田県.com | プラグインその3
  5. WordPress2.21から2.51へ プラグインの一覧 - 松下健次郎のブログ
  6. SkyLocal.net - 人気記事表示システムを導入

コメントをどうぞ