Home > CUSTOMIZED | WordPress > [wp×SQLite]日付から記事取得

[wp×SQLite]日付から記事取得

WordPressでSQLiteを使うと、年・月・日 つまりは日付から記事を読み出すのがうまくいかない。
これはMySQLとSQLiteとでSQL文が違うために起きている。

言わば、『MySQLとは違うのだよ MySQLとは!!!』ということ

『YEAR(wp_posts.post_date)=2009』は
 『wp_posts.post_date like "2009-%"』か
 『strftime('%Y',wp_posts.post_date)='2009'』

『MONTH(wp_posts.post_date)=04』は
 『wp_posts.post_date like "%-04-%"』か
 『strftime('%m',wp_posts.post_date)='04'』

『DAYOFMONTH(wp_posts.post_date)=04』は
 『wp_posts.post_date like "%-04-%"』か
 『strftime('%d',wp_posts.post_date)='04'』
に修正が必要

/wp-content/pdo/db.php

直後に

if( strtolower(mb_substr(str_replace(" ","",$query),0,6)) == "select" )
{
	if( stristr($query, 'where') )
	{
		$arr_query[0] = preg_replace("/(SELECT .* FROM .* WHERE) (.*)/i", "$1" , $query);
		$arr_query[1] = preg_replace("/(SELECT .* FROM .* WHERE) (.*)/i", "$2" , $query);
		$explode = 1;
		if($arr_query[0] == $arr_query[1])
		{
			$explode = 0;
		}
		$arr_query[1]	= preg_replace("/YEAR\(wp_posts\.post_date\)=([0-9]*[0-9])/i", "strftime('%Y',wp_posts.post_date)='$1'" , $arr_query[1]);
		$arr_query[1]	= preg_replace("/DAYOFMONTH\(wp_posts\.post_date\)=([0-9]*[0-9])/i", "strftime('%d',wp_posts.post_date)='$1'" , $arr_query[1]);
		$arr_query[1]	= preg_replace("/MONTH\(wp_posts\.post_date\)=([0-9]*[0-9])/i", "strftime('%m',wp_posts.post_date)='$1'" , $arr_query[1]);
		if($explode == 1)
		{
			$query	= $arr_query[0]." ".$arr_query[1];
		}else
		{
			$query	= $arr_query[1];
		}
	}
}

※現状『YEAR(wp_posts.post_date)=2009』とか書いたとき修正されない様子…
ページ送り『SELECT FOUND_ROWS()』対応とセットで修正が必要

まだ完全ではないし他にもカラム追加系とか
SQLiteはデータ型もたなくて、自動noが1個しか使えないみたい?とかで
色々修正が必要になる様子。

更新@2010.01.02 00:06


関連する投稿

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://qooga.jb-jk.net/wp/2009/06/getpost_for_date/trackback/
Listed below are links to weblogs that reference
http://qooga.jb-jk.net/wp[wp×SQLite]日付から記事取得 from MOT:主にプログラム勉強メモ部屋

Home > CUSTOMIZED | WordPress > [wp×SQLite]日付から記事取得

Search
Option
  • Twitter
  • 絵板
Feeds
commercial
Mobile
Meta
Tag Cloud
TOP10
commercial

Return to page top