Удалить завершающий слэш из базы категорий и базы меток

Вопрос или проблема

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

В настоящее время я использую постобработку через PHP-скрипт и str_replace, но это значит, что я застреваю с тем, что жестко закодировал (это “category” и “tag” сейчас).

Есть предложения?

Я провел много исследований и придумал этот код, чтобы решить проблему, а также добавить “.html” к страницам, категориям и тегам. Настройка постоянных ссылок заботится о постах.

function hpct_page_rewrite($rules) {
  foreach ($rules as $key => $value) {
    $newrules[str_replace('/?', '.html', $key)] = $value;
  }
  return $newrules;
}
function hpct_page_link($link) {
  return $link . '.html';
}
function hpct_category_rewrite($rules) {
  foreach ($rules as $key => $value) {
    $newrules[str_replace('/?', '.html', $key)] = $value;
  }
  return $newrules;
}
function hpct_category_link($link) {
  return str_replace('category/', 'category-', $link) . '.html';
}
function hpct_tag_rewrite($rules) {
  foreach ( $rules as $key => $value ) {
    $newrules[str_replace('/?', '.html', $key)] = $value;
  }
  return $newrules;
}
function hpct_tag_link($link) {
  return str_replace('tag/', 'tag-', $link) . '.html';
}
add_filter('page_rewrite_rules', 'hpct_page_rewrite', 3);
add_filter('page_link', 'hpct_page_link', 1);
add_filter('category_rewrite_rules', 'hpct_category_rewrite', 3);
add_filter('category_link', 'hpct_category_link', 1);
add_filter('tag_rewrite_rules', 'hpct_tag_rewrite', 3);
add_filter('tag_link', 'hpct_tag_link', 1);

Да, это тоже жестко закодировано, и я в конечном итоге позабочусь об этом. Но по крайней мере я могу сделать это изнутри WordPress.

Ответ или решение

Вопрос: Как удалить завершающий слэш из базовой структуры категорий и тегов в WordPress и заменить его на тире?

Контекст: Вы работаете над созданием статического сайта, используя WordPress, и хотите заменить завершающий слэш в URL категорий и тегов на тире через PHP-скрипт.

Обзор проблемы

Вы используете настраиваемый PHP-скрипт для управления URL структуры в WordPress, стремясь улучшить SEO и сделать сайт более дружелюбным для пользователей. В настоящее время вы используете str_replace для преобразования URL, но ограничены жесткой кодировкой строк «category» и «tag».

Решение

Код, который вы предоставили, уже выполняет часть работы по преобразованию. Однако, его можно улучшить и привести настройки к более гибким, чтобы не было необходимости жестко прописывать значения.

Переписывание URL категорий и тегов

Для более универсального решения сделайте следующее:

  1. Создайте функции для преобразования структуры URL:

    • _hpct_categorylink: заменяет ‘category/’ на ‘category-‘ и добавляет ‘.html’
    • _hpct_taglink: заменяет ‘tag/’ на ‘tag-‘ и добавляет ‘.html’
  2. Оптимизируйте существующий код:

    • Вместо жесткой кодировки используйте WordPress фильтры и хуки для динамического определения пути.
  3. Используйте фильтры WordPress:

    • Чтобы функции автоматически применялись ко всем категориям и тегам.

Пример улучшенного подхода:

function modify_structure($base, $link) {
  return str_replace($base . '/', $base . '-', $link) . '.html';
}

function hpct_category_link($link) {
  return modify_structure('category', $link);
}

function hpct_tag_link($link) {
  return modify_structure('tag', $link);
}

add_filter('category_link', 'hpct_category_link', 10, 1);
add_filter('tag_link', 'hpct_tag_link', 10, 1);

Пояснения

  • Функция modify_structure помогает устранить дублирование кода, позволяя задавать основу (base) и обрабатывать URL с помощью одного универсального метода.
  • Обработка URL производится через фильтры WordPress, которые обеспечивают автоматическое внесение изменений, когда адреса категорий и тегов формируются.

Заключение

Следуя этому подходу, вы сможете избежать жесткой кодировки, сделав ваш код более гибким и легким для управления и дальнейшего обслуживания. Такой способ настройки не только улучшает структуру URL, но и положительно сказывается на SEO вашего сайта.

Коды, подходы и структуры, описанные здесь, должны быть тщательно протестированы в тестовой среде, чтобы убедиться в их корректной работе перед внедрением на живом сайте.

Оцените материал
Добавить комментарий

Капча загружается...