Обнаружение заголовка(ов) поста в содержании и автоматическая привязка

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

Обнаружение заголовка(ов) поста в содержании и автоматическая привязка

Я ищу фрагмент кода или плагин, чтобы решить одну из моих проблем.

Существует 4 разных типа постов. У каждого из них как минимум 5000 постов.
Я хочу: если я введу заголовок поста (обый текст) в содержимое, он автоматически получит ссылку на пост.

Так что, если у меня есть пост с заголовком “CCC”, и я вставлю его в содержимое другого поста, WordPress автоматически обнаружит это и свяжет “CCC”.

Это возможно? Существует ли такой плагин, фрагмент кода или что-то еще?

Спасибо

Вы можете достичь желаемого результата с использованием данного кода, который нужно добавить в файл functions.php вашей темы.

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

<?php
function auto_link_post_titles( $content ) {
    // Это нужно для получения всех опубликованных постов из всех типов постов.
    $args = array(
        'post_type'      => 'any', // это необходимо для получения постов из всех типов.
        'post_status'    => 'publish',
        'posts_per_page' => -1, // это для получения всех постов
    );

    $posts = get_posts( $args );

    // Здесь мы проходим через каждый пост и заменяем заголовок в содержимом на ссылку.
    foreach ( $posts as $post ) {
        $post_title = esc_html( $post->post_title ); // Здесь мы получаем заголовок поста.
        $post_link  = esc_url( get_permalink( $post->ID ) ); // Здесь мы получаем ссылку на пост.
        
        // Создаем элемент ссылки
        $link = '<a href="' . $post_link . '">' . $post_title . '</a>';
        
        // Здесь мы заменяем обычный текст заголовка на ссылку.
        $content = str_replace( $post_title, $link, $content );
    }

    return $content;
}

// Мы применяем функцию к содержимому постов.
add_filter( 'the_content', 'auto_link_post_titles' );

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

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

<?php
function auto_link_post_titles( $content ) {
    // Получаем все опубликованные посты всех типов
    $args = array(
        'post_type'      => 'any', // получаем посты всех типов
        'post_status'    => 'publish',
        'posts_per_page' => -1, // извлекаем все посты
    );

    $posts = get_posts( $args );

    // Проходим по каждому посту и заменяем заголовок в содержимом на ссылку
    foreach ( $posts as $post ) {
        $post_title = esc_html( $post->post_title ); // получаем заголовок поста
        $post_link  = esc_url( get_permalink( $post->ID ) ); // получаем ссылку на пост

        // Создаем элемент ссылки
        $link = '<a href="' . $post_link . '">' . $post_title . '</a>';

        // Заменяем простой текст заголовка на ссылку
        $content = str_replace( $post_title, $link, $content );
    }

    return $content;
}

// Применяем функцию к содержимому постов
add_filter( 'the_content', 'auto_link_post_titles' );
?>

Пояснение к коду:

  1. Получение постов: Код использует функцию get_posts() для получения всех опубликованных постов из всех типов. Вы можете настроить аргументы по мере необходимости, чтобы ограничить выборку по конкретным типам записи или статусам.

  2. Цикл по постам: Для каждого поста извлекается заголовок и ссылка. Заголовок очищается с помощью esc_html(), чтобы избежать проблем с XSS, а ссылка — с помощью esc_url().

  3. Замена текста на ссылку: Используется функция str_replace() для замены текстового заголовка на HTML-элемент ссылки.

  4. Фильтрация контента: Код добавляет наш фильтр the_content, благодаря чему функция будет применена к содержимому каждого поста при выводе на экран.

Использование:

Просто вставьте данный код в файл functions.php вашей активной темы WordPress. После этого, если в любом содержимом поста будет присутствовать текст заголовка другого поста, этот текст автоматически станет кликабельной ссылкой на соответствующий пост.

Таким образом, вы получите автоматическое связывание заголовков с их страницами, что улучшит навигацию по вашему сайту и повысит удобство пользователей. Если у вас возникнут какие-либо вопросы или потребуется дополнительная помощь, не стесняйтесь обращаться!

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

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