WordPress 2.1 bug
2007. január 30. kedd 19:24:29
Van benne hiba. A rewrite.php-ban kellett javítani, hogy ha
/%year%/%monthnum%/%day%/%post_id%
formátumu a permalink, akkor a %day% és a %post_id% ne legyen összemosva.
A hibát kb. fél óra alatt megtaláltam, de csak azért, mert elkezdtem nézni a 2.0.6-os, és a 2.1-es kódját egymás mellett, s ahol eltérés volt, ott leteszteltem, hogy mi van ha a korábbi verziót hagyom benne. :-)
Aztán meg pont ezen a részen ott volt, hogy a day, és a post_id összemosását akadályozza meg, tehát erre kiemelten figyeltem.
Ilyenkor alapvetően büszke vagyok magamra, hogy egy olyan programozási nyelven, amit nem ismerek (php), egy olyan alkalmazásba, aminek eddig nem vizsgáltam a forráskódját komolyabban, ennyi idő alatt lokalizálok egy problémát. :-)
Ja, itt a módosítás (kiemelve a módosított sor. Meg ne kérdezzétek, hogy azt miért kellett kikommentezni, de ki kellett, s most jó!):
–rewrite.php
if ( empty($date_endian) )
$date_endian = ‘%year%/%monthnum%/%day%’;
// Do not allow the date tags and %post_id% to overlap in the permalink
// structure. If they do, move the date tags to $front/date/.
$front = $this->front;
preg_match_all(’/%.+?%/’, $this->permalink_structure, $tokens);
$tok_index = 1;
foreach ($tokens[0] as $token) {
if ( ($token == ‘%post_id%’) && ($tok_index <= 3) ) {
$front = $front . 'date/';
break;
}
$tok_index++;
}
helyett:
if ( empty($date_endian) )
$date_endian = '%year%/%monthnum%/%day%';
// Do not allow the date tags and %post_id% to overlap in the permalink
// structure. If they do, move the date tags to $front/date/.
$front = $this->front;
preg_match_all(’/%.+?%/’, $this->permalink_structure, $tokens);
$tok_index = 1;
foreach ($tokens[0] as $token) {
if ( ($token == ‘%post_id%’) && ($tok_index <= 3) ) {
$front = $front . 'date/';
break;
}
//$tok_index++;
}
Így megy a permalink jól.