wplinks.ru wordpress WPLinks.ru

Как автоматизировать обновление внутренних ссылок при изменении URL в WordPress

Почему важно обновлять внутренние ссылки при смене URL

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

Ручное обновление всех внутренних ссылок — трудоемкий процесс, особенно если сайт большой. Поэтому автоматизация обновления ссылок позволяет сэкономить время и избежать ошибок.

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

Как устроены внутренние ссылки в WordPress

Внутренние ссылки в WordPress обычно хранятся в нескольких местах:

  • В содержимом записей и страниц (post_content)
  • В меню (wp_posts с типом nav_menu_item)
  • В виджетах и настройках темы
  • В метаданных записей (postmeta)

Для корректного обновления ссылок нужно искать и заменять старый URL во всех этих местах.

Автоматизация обновления ссылок с помощью SQL-запросов

Самый простой способ — использовать SQL-запросы для массовой замены URL в базе данных. Но важно делать резервную копию базы перед выполнением.

Пример SQL-запроса для замены ссылки в содержимом записей:

UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://example.com/old-url', 'https://example.com/new-url') WHERE post_content LIKE '%https://example.com/old-url%';

Аналогично можно обновлять ссылки в метаданных:

UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'https://example.com/old-url', 'https://example.com/new-url') WHERE meta_value LIKE '%https://example.com/old-url%';

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

Как создать функцию в WordPress для автоматического обновления ссылок при смене URL

Для автоматизации процесса можно написать функцию, которая будет запускаться при изменении пермалинка записи и обновлять все внутренние ссылки на старый URL.

Пример функции wplinks_update_internal_links_on_url_change:

function wplinks_update_internal_links_on_url_change($post_id, $post_after, $post_before) {
    // Получаем старый и новый URL
    $old_url = get_permalink($post_before->ID);
    $new_url = get_permalink($post_after->ID);

    if ($old_url === $new_url) {
        return; // URL не изменился
    }

    global $wpdb;

    // Обновляем ссылки в содержимом записей
    $wpdb->query($wpdb->prepare(
        "UPDATE {$wpdb->posts} SET post_content = REPLACE(post_content, %s, %s) WHERE post_content LIKE %s",
        $old_url, $new_url, '%' . $wpdb->esc_like($old_url) . '%'
    ));

    // Обновляем ссылки в метаданных
    $wpdb->query($wpdb->prepare(
        "UPDATE {$wpdb->postmeta} SET meta_value = REPLACE(meta_value, %s, %s) WHERE meta_value LIKE %s",
        $old_url, $new_url, '%' . $wpdb->esc_like($old_url) . '%'
    ));

    // Здесь можно добавить обновление ссылок в меню и других местах
}
add_action('post_updated', 'wplinks_update_internal_links_on_url_change', 10, 3);

Эта функция срабатывает при обновлении записи и автоматически заменяет старый URL на новый в содержимом и метаданных. По аналогии можно расширить логику для меню и других элементов.

Обновление ссылок в меню WordPress

Меню хранятся в записях с типом nav_menu_item. Для обновления ссылок в меню можно использовать следующий подход:

function wplinks_update_menu_links($old_url, $new_url) {
    $menu_items = get_posts([
        'post_type' => 'nav_menu_item',
        'numberposts' => -1,
        'meta_query' => [
            [
                'key' => '_menu_item_url',
                'value' => $old_url,
                'compare' => 'LIKE'
            ]
        ]
    ]);

    foreach ($menu_items as $item) {
        $menu_url = get_post_meta($item->ID, '_menu_item_url', true);
        if (strpos($menu_url, $old_url) !== false) {
            $new_menu_url = str_replace($old_url, $new_url, $menu_url);
            update_post_meta($item->ID, '_menu_item_url', $new_menu_url);
        }
    }
}

Вызывать эту функцию стоит внутри хука post_updated или отдельно при смене URL.

Использование плагинов для автоматизации обновления ссылок

Если хочется избежать ручного кода, можно использовать плагины:

  • Better Search Replace — позволяет искать и заменять URL в базе данных. Удобно для разовых массовых замен.
  • Velvet Blues Update URLs — автоматически обновляет ссылки после смены домена или структуры URL.
  • WPSHOP Clearfy Pro — плагин оптимизации с функциями управления ссылками и автоматизацией задач, помогает поддерживать актуальность ссылок.

Ссылки на плагины с UTM-метками для wplinks.ru:

Советы по предотвращению проблем с внутренними ссылками

Чтобы минимизировать необходимость частого обновления ссылок, следуйте рекомендациям:

  • По возможности не менять URL записей и страниц без веской причины.
  • Использовать постоянные ссылки с понятной структурой.
  • При необходимости изменения URL использовать 301 редиректы для сохранения SEO.
  • Регулярно проверять сайт на наличие битых ссылок с помощью сервисов и плагинов.
  • Автоматизировать обновление ссылок с помощью описанных методов.

Заключение

Автоматизация обновления внутренних ссылок при смене URL — важный элемент поддержки WordPress-сайта. Использование кастомных функций и проверенных плагинов позволяет снизить риск ошибок и улучшить SEO.

Приведенный пример функции wplinks_update_internal_links_on_url_change можно доработать под конкретные задачи и интегрировать с существующими инструментами.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше