Постоянные ссылки WordPress, которые включают имя и идентификатор, но учитывают только идентификатор

У меня есть сайт WordPress, и я хотел бы подражать тому, как определенные новостные агентства и порталы генерируют свои URL-адреса.

Например, у вас есть статья под названием «Мужчина любит женщину», и программа CMS создаст URL-адрес, подобный следующему:

https://example.com/man-loves-woman/55123

Где 55123 реальный идентификатор статьи, так

https://example.com/man-does-not-love-woman/55123

вернет ту же статью, пока реальный идентификатор, 55123не изменено Неважно, какая последовательность возможна, не так ли? %postname%/%id% или же %id%/%postname%

Прямо сейчас у меня есть пользовательская настройка постоянной ссылки:

/%postname%/%year%%monthnum%%day%

Я не особенно рад этому, я хотел бы иметь это /%postname%/%unique_id% где %postname% генерируется так по умолчанию, но это не имеет значения, каково его значение, так как %unique_id% неизменен.

Я смотрю на wp-includes/link-template.php а также rewrite.php, но я не очень разбираюсь в PHP, но если кто-то может указать мне правильное направление, я был бы благодарен, у меня есть некоторое общее представление о том, как все это работает, с правильным толчком, который я мог бы проследить и понять это на мой собственный.

Возможно, я смотрю на все это неправильно и должен сосредоточиться на Nginx позади него и установить правило перезаписи, которое вставляет %postname% который может быть чем угодно и просто использовать Default в настройках постоянных ссылок WordPress, который производит:

https://example.com/?p=123

3

Решение

Если вы хотите отобразить уникальный идентификатор сообщения после его имени, вы можете сделать это из Custom Structure внутри настроек постоянной ссылки WordPress, добавив эту структуру.

/%postname%/%post_id%

Он не работает на localhost, но работает на веб-сайте.

введите описание изображения здесь

3

Другие решения

Вы должны посмотреть в add_rewrite_rule. Добавьте следующий код functions.php

add_action( "init", "so_27051693_permalink" );
function so_27051693_permalink() {

//This rule will match : man-loves-woman/55123
add_rewrite_rule(
'^([^/]*)/([0-9]+)/?',
'index.php?p=$matches[2]',
'top' );

//This rule will match : 55123/man-loves-woman
add_rewrite_rule(
'^([0-9]+)/([^/]*)/?',
'index.php?p=$matches[1]',
'top' );

}

В обоих случаях пост будет получен с использованием post_id. Обязательно сбросьте правила перезаписи, сохранив постоянные ссылки.

2

По вопросам рекламы [email protected]