WordPress2.1.xでK2を使う

In: technology| WordPress

16 5月 2007

このたび、WordPressを2.0.7から2.1.3にアップグレードしました。
ところで、こういうアップグレードというのは初めての作業でして。
何事もなく完了するとは思ってなかったのですが、やっぱり問題は起きてしまいました。


問題が起きたのは、デザイン面。
端的に言えば、K2のPHPの一部がエラーになってしまいました。

エラー文はこちら。

WordPress database error: [You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‘GROUP BY year(post_date), month(post_date), dayofmonth(post_dat]
SELECT DISTINCT post_date FROM GROUP BY year(post_date), month(post_date), dayofmonth(post_date)

どうやら、SQL関連の模様。
ただ、これだけだとさっぱりだったので、検索してみると、フォーラムでも話題になっていることをこちらのブログ経由で発見。
フォーラムにはこんな回答がついていました。

テーマが 2.1.x に非対応なのでしょう。SQL 文を見ると分かりますが、FROM の後に来るべきテーブル名が空になっていて、いきなり GROUP BY 句が来ています。これでは SQL エラーになって当然です。

ああ。よく見れば、なるほどそのとおり。
でも、解決策については何もなかったので、このヒントをもとに自分で直してみることに決定。

このSQLを書いてあるところを探して、そこから対応していけばよいでしょう。
このSQLが書いてある場所は、k2のテーマのディレクトリの下のapp/includes/info.php。
130行目から先のソースが実に興味深い。

function k2countpages($query) {
	global $wpdb;

	// WP 2.0
	if (get_wp_version() < 2.1) {
		$posts_per = (int) get_option('posts_per_page');
		if ( empty($posts_per) ) {
			$posts_per = 1;
		}

		$search = '/FROM\s+?(.*)\s+?GROUP BY/siU';
		preg_match($search, $query->request, $matches);

		if ( 'posts' == get_query_var('what_to_show') ) {
			$from_where = $matches[1];
			$num_posts = $wpdb->get_var("SELECT COUNT(DISTINCT ID) FROM $from_where");
		} else {
			$from_where = preg_replace('/( AND )?post_date >= (\'|\")(.*?)(\'|\")( AND post_date < = (\'\")(.*?)(\'\"))?/siU', '', $matches[1]);
			$num_posts = $wpdb->query("SELECT DISTINCT post_date FROM $from_where GROUP BY year(post_date), month(post_date), dayofmonth(post_date)");
		}

		return ceil($num_posts / $posts_per);
	}

	// WP 2.1+
	return($query->max_num_pages);
}

WordPressの2.0と2.1の場合分けをしていますね。
でも、エラーに2.0で使われているはずのSQLが出ているということは、if文の中に入っちゃってるってことでしょう。
ソースを見る限り、このif文をコメントアウトしてしまえば、問題なく動きそう。

ということで、実践。
無事、エラーはいなくなってくれました。めでたしめでたし。

Via:


1 Response to WordPress2.1.xでK2を使う

Avatar

?????????????

11月 3rd, 2019 at 18:45:41

??????????? ??
??????????????????? ?????
?2019 ?????!??????????????????
????????????,???????????,??????????,???? ?????????
??????????????? ????????
??????????????????
???????????????????????????
????????????? https://www.cocoejp1.com/ProductList1.aspx?TypeId=840830569083478

Comment Form

About this blog

ゆるーく、ふわーっと、興味のままに。

自分のかたわらに置いておくメモ代わり。

Photostream