PDO for WordPress と Google Sitemaps Generator for WordPress

2010/05/23 by happybreeding Leave a reply »

Google Sitemaps Generator for WordPress は、WordpressでXML-Sitemapを生成するのに使われる定番プラグインの一つ。でも、このプラグインは、どういうわけかmysqlに微妙に依存していて、SQliteの環境では動作しない。

今日、Googleのウェブマスターツールを見るとサイトマップがエラーになっていて超焦ったのだけど、通知が来たからと、このプラグインをバージョンアップしたことを思いだした。変更が必要だということをすっかり失念していた。

パッチをブログに貼ったと思ってたけどどうもそうはしてなかったみたいなので再作成して、今度は忘れないように貼っておくことにする。

--- sitemap-core.php.orig    2010-04-03 01:07:43.000000000 +0900
+++ sitemap-core.php    2010-05-22 23:59:40.000000000 +0900
@@ -1787,25 +1787,16 @@
}

if($this->GetOption("b_safemode")===true) {
-                $postRes = mysql_query($sql,$wpdb->dbh);
+                $postRes = $wpdb->get_results($sql);
if(!$postRes) {
-                    trigger_error("MySQL query failed: " . mysql_error(),E_USER_NOTICE); //E_USER_NOTICE will be displayed on our debug mode
+                    trigger_error("query failed: ",E_USER_NOTICE); //E_USER_NOTICE will be displayed on our debug mode
return;
}
} else {
-                $con = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD,true);
-                if(!$con) {
-                    trigger_error("MySQL Connection failed: " . mysql_error(),E_USER_NOTICE);
-                    return;
-                }
-                if(!mysql_select_db(DB_NAME,$con)) {
-                    trigger_error("MySQL DB Select failed: " . mysql_error(),E_USER_NOTICE);
-                    return;
-                }
-                $postRes = mysql_unbuffered_query($sql,$con);
+                $postRes = $wpdb->get_results($sql);

if(!$postRes) {
-                    trigger_error("MySQL unbuffered query failed: " . mysql_error(),E_USER_NOTICE);
+                    trigger_error("unbuffered query failed: " ,E_USER_NOTICE);
return;
}
}
@@ -1840,7 +1831,7 @@

//Cycle through all posts and add them
-                while($post = mysql_fetch_object($postRes)) {
+                foreach( $postRes as $post ) {

//Fill the cache with our DB result. Since it's incomplete (no text-content for example), we will clean it later.
$cache = array(&$post);
@@ -1936,7 +1927,6 @@
unset($postRes);
unset($prioProvider);

-                if($this->GetOption("b_safemode")!==true && $con) mysql_close($con);
}
if($debug) $this->AddElement(new GoogleSitemapGeneratorDebugEntry("Debug: End Postings"));
}

“>”が相変わらず化けるなぁ。使うときは気をつけないと。Syntax Highlighter for WordPressに変えてみた。

コメントを残す