Шорткод для извлечения определенного заголовка поста вне цикла при передаче ID.

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

Я хочу иметь возможность создавать шорткод, который вернет заголовок поста, когда я передам ID поста. Например, [myshortcode_title ID=1234]

У меня есть шорткод, который вытягивает заголовок поста из текущего поста:

function myshortcode_title(){
   return get_the_title();
}
add_shortcode( 'page_title', 'myshortcode_title' );

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

Документация Codex для шорткодов имеет раздел по Обработке Атрибутов.

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

function my_shortcode_handler( $atts, $content = null ) {
    $a = shortcode_atts( array(
        'attr_1' => 'attribute 1 default',
        'attr_2' => 'attribute 2 default',
        // ...и так далее
    ), $atts );
}

Это то, что я использовал для получения нужного результата, то есть заголовка поста, передавая ID поста:

// Получить заголовок поста вне цикла
// ИСПОЛЬЗОВАНИЕ: [get-post-details post="123"]

function title_by_id($atts) {
    $atts = shortcode_atts( array(
        'post' => 0,
    ), $atts, 'title-from-id' );   
    $id = $atts['post'];               
    $data = get_the_title($id);        
    return $data;                      
}
add_shortcode( 'title-from-id', 'title_by_id' );

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

Конечно, давайте рассмотрим более подробно ваш запрос о создании шорткода для извлечения заголовка поста по его ID вне цикла в WordPress.

Цель

Ваша задача — создать шорткод, который возвращает заголовок указанного поста при передаче его ID, например: [myshortcode_title ID=1234].

Решение

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

Шаги для реализации шорткода

  1. Определение функции шорткода: Начните с создания функции, которая будет извлекать заголовок поста по его ID. Важно учитывать, что функция должна корректно обрабатывать ситуацию, когда ID не указан или указан неправильно.

  2. Обработка атрибутов: Используйте функцию shortcode_atts, чтобы задать параметры по умолчанию и обработать входные атрибуты.

  3. Создание и регистрация шорткода: Используйте add_shortcode, чтобы добавить и зарегистрировать ваш шорткод в WordPress.

Ниже приведён полный пример реализации:

// Функция для получения заголовка поста по ID вне цикла 
// Пример вызова: [title-from-id post="1234"]
function title_by_id($atts) {
    // Обработка атрибутов, с заданием значения по умолчанию
    $atts = shortcode_atts(array(
        'post' => 0, // Значение по умолчанию для post ID
    ), $atts, 'title-from-id');

    $id = $atts['post']; // Получение значения атрибута 'post'

    // Получение заголовка поста по ID
    $data = get_the_title($id);

    // Возврат заголовка или уведомления, если пост не найден
    return $data ? $data : 'Пост не найден.';
}

// Регистрация шорткода
add_shortcode('title-from-id', 'title_by_id');

Объяснение ключевых моментов

  • Обработка атрибутов: Функция shortcode_atts позволяет задать параметры и их значения по умолчанию, которые будут использоваться, если они не переданы пользователем.
  • Отладка: Если ID не передан, или указанный пост не существует, функция должна возвращать понятное сообщение, чтобы пользователь понимал причину отсутствия результата.

Консультация

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

Оптимизация для SEO

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

Это решение поможет вам управлять контентом более гибко и эффективно, улучшая пользовательский опыт. Если возникнут вопросы или понадобятся дополнительные функции, не стесняйтесь обращаться за детальными разъяснениями.

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

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