Помогите по PHP функциям str_replace и preg_match

seo3_Kul
На сайте с 25.10.2010
Offline
110
412

Уважаемые программисты, подскажите, пожалуйста есть код:

function my_paged_links($string, $type_of_url) {
if ( $type_of_url == 'paged') {
$string = str_replace('page/', 'page', $string);
}
return $string;
}
add_filter('user_trailingslashit', 'my_paged_links', 10, 2);

function my_pagenum_link($link) {
if ( $_SERVER['REQUEST_URI'] != '/' ) {
preg_match('/\/page[0-9]+/', $_SERVER['REQUEST_URI'], $matches);
if ( !empty($matches) ) {
$link = str_replace($matches[0], '', $link);
}
}
return $link;
}
add_filter('get_pagenum_link', 'my_pagenum_link');

заменяет ссылки и url вида:

/page/2/

/page/3/

на:

/page2/

/page3/

по итогу нужно их менять на:

/page-2/

/page-3/

Понимаю, где заменить «page» на «page-» в коде (3 строка):

$string = str_replace('page/', 'page-', $string);

Но тогда заменяются только сами ссылки на страницы (отдают 404 ошибку):

/page-2/

/page-3/

а сами страницы работают с урлами:

/page2/

/page3/

Продвижение и раскрутка сайтов!
edogs software
На сайте с 15.12.2005
Offline
739
#1

В .htaccess для начала загляните - обычно там обработка такого типа урлов.

Или ищите в движке где роутинг обрабатывается.

Тот кусок кода что Вы привели - он преобразует ссылки для отображения пользователю.

А вот входящие от пользователя ссылки "преобразует" другой кусок кода, который и надо найти.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход.
SS
На сайте с 15.12.2015
Offline
62
#2

Пишите новую функцию и меняйте адреса страниц.

seo3_Kul:
заменяет ссылки и url вида:

Не адреса страниц.

Размещение естественных ссылок на тематических порталах, отзовиках, справочниках (/ru/forum/1013919)
seo3_Kul
На сайте с 25.10.2010
Offline
110
#3

edogs, если этот кусок кода убрать, то и сами ссылки и url страниц отображаются как:

/page/2/

/page/3/

С этим куском кода они преобразуются в:

/page2/

/page3/

Следовательно, как я понимаю, замена и ссылок и самих url происходит именно в этом коде.

В .htaccess нет каких либо упоминаний.

---------- Добавлено 08.05.2019 в 22:30 ----------

SERM-service:
Не адреса страниц.

в том то и дело, что и адреса преобразуются, как я указал выше

S
На сайте с 30.09.2016
Offline
469
#4

Ну и зачем ломать функциональность вордпресса? 🚬

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
edogs software
На сайте с 15.12.2005
Offline
739
#5
seo3_Kul:
Следовательно, как я понимаю, замена и ссылок и самих url происходит именно в этом коде.

Да, в этом. Но у Вас движок понимает page/2, а не page-2. Вам надо научить его понимать page-2, для этого надо найти участок кода который разбирает входящий от юзера урл .

Хотя возможно это как раз второй участок кода, попробуйте

preg_match('/\/page[0-9]+/', $_SERVER['REQUEST_URI'], $matches);

заменить на

preg_match('/\/page-[0-9]+/', $_SERVER['REQUEST_URI'], $matches);

seo3_Kul
На сайте с 25.10.2010
Offline
110
#6

edogs, пробовал так, ничего не меняется

При коде, который я указал отрабатывает 301-редирект с page/2 на page2

Не могу понять откуда он берется... если в данном коде явно не забивается

Куда копать?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий