Как добавить косую черту в конце URL категории и удалить ее в конце поста на WordPress? - PullRequest
0 голосов
/ 17 января 2019

Как сделать URL-адрес категории WordPress с косой чертой в конце и без него в URL-адресе поста. Как это:

"mysite.com/mycategory/" «mysite.com/mycategory/mypost"

Проблема в том, что по умолчанию вы можете делать все с косой чертой или все без косой черты. (Префикс 'category' уже удален через htaccess).

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Я решил это так:

function no_page_slash( $string, $type ){
    if($type == 'single')
        $string = untrailingslashit($string);
   return $string;
}
add_filter('user_trailingslashit', 'no_page_slash', 70, 2);

Ваши постоянные ссылки должны быть установлены как /% category% /% postname% /.

0 голосов
/ 17 января 2019

Для этого есть два хороших решения:

В классе WP_Rewrite есть переменная с именем $use_trailing_slashes, которая устанавливается динамически в зависимости от того, заканчивается ли ваша пользовательская структура постоянной ссылки на '/'.

$this->use_trailing_slashes = ( '/' == substr($this->permalink_structure, -1, 1) );

Это означает, что все сгенерированные WP ссылки (the_permalink, category_link, the_permalink_rss и т. Д.) Не будут заканчиваться на '/'. Таким образом, для страниц категорий WP будет отображать «/ category / category» вместо «/category/category/'.

»

Вы можете решить эту проблему либо с помощью фильтра, либо изменив свой .htaccess, либо с помощью обоих:

Пример фильтра user_trailingslashit

Функция user_trailingslashit применяет фильтр 'user_trailingslashit' к результату до его возвращения. Он предоставляет URL-адрес и тип URL-адреса для фильтра.

$string = apply_filters('user_trailingslashit', $string, $type_of_url);

Таким образом, чтобы подключиться к этому и добавить косую черту ко всем URL-адресам, кроме отдельных сообщений, добавьте этот код в файл плагина или в файл темы functions.php.

function fix_trailingsss($s='',$t='single')
{
  if($t!='single')$s=rtrim($s,'/').'/';
  return preg_replace('/^(.*)([^l/])$/i', '\1\2/',$s);
}
add_filter('user_trailingslashit', 'fix_trailingsss', 9999,2);

Htaccess RedirectMatch

Вы можете настроить перенаправление .htaccess, чтобы URL-адреса категории всегда использовали конечную косую черту, например:

RedirectMatch 301 ^/category/([^/]+)$ /category/$1/

Источник информации : https://www.askapache.com/wordpress/adding-trailing-permalinks/

По всем дополнительным вопросам обращайтесь к Кодексу:

https://codex.wordpress.org/wp_rewrite

https://codex.wordpress.org/Using_Permalinks

...