Wordpress関連

木谷 公哉(KITANI Kimiya)

はじめに
ここではWordpressに関する特殊なトラブルやメモについて記載します
1. Wordpress3.1とWPML2.0.4.1において、query.php on line 2890とでる
そしてデフォルト言語以外でのカテゴリーがまったく使えなくなります。
Wordpress 3.1.1で本問題は解決しました。これは抜本的な修正が加えられています(2011.04.12)

- Wordpress.orgにPostしといた(ID:kimipooh)

[問題点]
 WordPress3.1から
  cat  --> category_name

になったため、標準ではcategory_name --> cat変換されているがWPMLではそ
のあたりをしないので、wp-includes/query.phpに正しいデータが送られてな
いようだ。

HP Warning: reset() expects parameter 1 to be array, null given in
/path..../query.php on line 2890,

というエラーが出る。多くのサイトでこのエラーがでているようだ。

[暫定対処法]
  wp-includes/taxonomy.php を改変し、URLに「cat=ID番号」を追加する。

function get_term_linkにおいて

1.2846行: $termlink = "?$t->query_var=$slug"; を下記に変更

  $termlink = "?$t->query_var=$slug".'&cat='.$term->term_id;

2.2849行: $termlink = "?taxonomy=$taxonomy&term=$slug"; を下記に変更

  $termlink = "?taxonomy=$taxonomy&term=$slug" .'&cat='.$term->term_id;

2. Contact Form 7で「送信」ボタンを押した後につぎに進まない (2011.03.28)

何らかのプラグインと競合している可能性があります。私の方では、「MEE News」プラグインを有効にしていてこの問題に遭遇しました。
本問題は最終的に少しMee NewsプラグインのPHPを変更(2011.04.14 修正

$_POST['_wpcf7'] != 1$_POST['_wpcf7'] == ""
でした。
- wp-content/plugins/meenews-newsletter/inc/init_meenews.php
if ( !isset($_POST['_wpcf7']) || $_POST['_wpcf7'] == ""){

// Mee News処理開始
foreach(....){

}
// Process終了

} // ifを閉じる
のように、処理されるforeachその外側をifで囲む。
- 意図: Contact Form 7の問い合わせフォームからの入力がある場合には、Mee Newsの処理はしない
というものです。


関連URL
3. タイトルがどのページに移動しても変わらない 2011.04.18
All in One SEOプラグインをいれている場合、設定から「Rewrite title」をOFFにしておくこと。これをONにしてうまくいかないテーマがあるため。
4. 有償版WPML 2.3.xで多言語環境がおかしくなる 2011.06.22(解決済み)
すべて消して、入れ直すことで解決。何かおかしくなっていたんですかね(2011.07.12)
日本語、英語の言語を定義し日本語をデフォルト言語としていると仮定します。
  • 日本語固定ページで、ページ属性が英語のものしか表示されなくなる
  • 投稿・固定ページのリスト表示で、最初のアクセスで必ず英語リストになる

WPML2.2.2.1ではそのようなことはなく、
  • ページ属性は、現在の言語のリストが出てくる
  • 投稿・固定ページのリスト表示で、最初のアクセスではデフォルト言語が表示される
なんですけどね。
仕様変更なのかもしれませんが、突然のことだったのでバグ報告とともに、日本語wordpressフォーラムに投稿しておきました。
5. 「設定」にアクセスできなくなる。 2011.07.12

options-general.php がエラーで止まるという件ですが、Wordpress 3.1までは、wp-include/function.phpの$support = true; をfalseにすることで、timezone関数を使わないような苦肉の策を使ってきましたが、
Wordpress 3.2からtimezone_identifiers_listの利用は必須になったようなので、 どうしようか悩んでいましたが解決できてよかったです。

状況

Redhat Linuxでyum管理していると、timezone関連の関数が使えない問題に起因しています。PHP5.3以降で問題が発生しており、timezone_identifiers_list()を呼び出すと、Segmentation faultsがでます。


対策
1. timezonedbの更新
pecl upgrade timezonedb
とコマンドラインでアップデート

2. timezonedbをphpのextensionとして読み込む
/etc/php.d/timezone.ini を作成し
extension=timezonedb.so
とする。

php -r 'timezone_identifiers_list();'

というコマンドラインでエラーが発生しないことを確認した上で、
Apacheを再起動すれば、timezonedbがTimezoneで使われ、本問題が回避できるよ
うです
関連リンク
6. Wordpress 3.2.1にアップグレードしたらサイトが動かなくなった (2011.07.21)
詳細については、(注意)WordPress 3.2.1へのアップグレード問題に記載しました。
WP3.2.1からwp-includes/compat.phpが削られているのが原因でした。
WP3.2のcompat.phpをダウンロードして、wp-includes/ に入れることで問題解決。
ということで暫定的に解決できるようです。詳細は上記サイトをご覧ください。