Как использовать подчеркивание в постоянную ссылку WordPress - PullRequest
1 голос
/ 13 ноября 2009

WordPress преобразует заголовок моего поста в постоянную ссылку, и это здорово, единственное, что я хочу подчеркнуть подчеркивание вместо дефисов, есть ли быстрое решение?

Ответы [ 5 ]

4 голосов
/ 13 ноября 2009

Выследите следующий файл: wp-includes/formatting.php

Перейти к функции sanitize_title_with_dashes. Вы найдете этот раздел кода внутри:

$title = strtolower($title);
$title = preg_replace('/&.+?;/', '', $title); // kill entities
$title = str_replace('.', '-', $title);
$title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
$title = preg_replace('/\s+/', '-', $title);
$title = preg_replace('|-+|', '-', $title);
$title = trim($title, '-');

Поменяйте местами все тире / дефисы (-) для подчеркивания (_), например:

$title = strtolower($title);
$title = preg_replace('/&.+?;/', '', $title); // kill entities
$title = str_replace('.', '_', $title);
$title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
$title = preg_replace('/\s+/', '_', $title);
$title = preg_replace('|-+|', '_', $title);
$title = trim($title, '_');

Обратите внимание, что все сообщения, созданные вами до этого изменения и использующие тег структуры %postname% permalink, будут нарушены.

В этом случае вам нужно вернуться и переиздать эту запись, чтобы черточки были заменены на подчеркивания. Или просто напишите себе немного SQL, чтобы заменить их.

4 голосов
/ 13 ноября 2009

Я бы не стал этого делать в основном из-за проблем SEO .

Есть ли какая-то конкретная причина для вас сделать это? Каждое решение, которое я читаю здесь, касается взлома ядра WordPress, и каждый раз, когда вы обновляете свою систему, вы собираетесь снова редактировать все эти файлы. (Фактически, 2.8.6 был доступен только вчера . Если вы используете старую версию, вам нужно будет изменить ее два раза).

2 голосов
/ 18 ноября 2009

Я бы не советовал менять основные файлы WordPress, вы потеряете свою работу, как только вы обновите свой сайт. Вы можете создать плагин или поместить его в файл functions.php вашей темы.

add_filter( 'sanitize_title', 'dashes_to_underscore' );
function dashes_to_underscore( $title ){
    return str_replace( '-', '_', $title );
}
2 голосов
/ 13 ноября 2009

Найдите функцию sanitize_title_with_dashes () в wp-includes / formatting.php

Измените вызовы на preg_replace, чтобы использовать подчеркивания вместо переносов.

0 голосов
/ 19 июля 2013
function sanitize_title_with_underscore( $title )
{
    $text_to_transform =   sanitize_title_with_dashes( $title);
    return str_replace( '-', '_', $text_to_transform );
}
...