Никто не знает?))
Ну хорошо, может быть получится сделать mod_rewrite’ом это? Например, делать редирект с — на _?
Можно добавить фрагмент в functions.php
активной темы:
function replace_dashes_with_underscores($link){
return str_replace('-', '_', $link);
}
add_filter('post_link', 'replace_dashes_with_underscores');
add_filter('page_link', 'replace_dashes_with_underscores');
function replace_underscores_with_dashes($query_vars) {
if ( !empty($query_vars['name']) )
$query_vars['name'] = str_replace('_', '-', $query_vars['name']);
if ( !empty($query_vars['pagename']) )
$query_vars['pagename'] = str_replace('_', '-', $query_vars['pagename']);
return $query_vars;
}
add_filter('request', 'replace_underscores_with_dashes');
URL сейчас, в старом блоге, имеет такой вид:
/blog/privet_mir/2010-11-20-189
А в блоге на WP такой:
/blog/privet-mir/2010-11-20-189
То есть нужно заменить _ только в названии поста. А приведенная выше ф-ия заменит его во всем URL (но вообще она работает, я проверил).
Вообще, я этим всем занимаюсь только потому, что не хочу терять индекс. Все посты давно проиндексированы по этим ссылкам. Конечно, мне не нравится такой вид URL, но…
А может быть есть способ с помощью 301 редиректа перенаправлять всех, пришедших по адресу сайт.ру/blog/privet_mir/2010-11-20-189 на страницу сайт.ру/privet-mir? Тогда и ПС поймут, и ЧПУ нормальные будут.
У меня при структуре /blog/%postname%/%year%-%monthnum%-%day%-%post_id%
перенаправления происходят автоматически. Если у вас не происходят, можно добавить в functions.php
темы такой фрагмент:
function redirect_old_links() {
if ( preg_match('/blog\/.*_+.*\/[0-9-]*/', $_SERVER['REQUEST_URI']) ) {
$request_uri = str_replace('_', '-', $_SERVER['REQUEST_URI']);
wp_redirect( 'http://' . $_SERVER['HTTP_HOST'] . $request_uri, 301 );
exit();
}
}
add_action('init', 'redirect_old_links');