Отобразить запись из пользовательского типа записи с помощью шорткода

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

Я создал пользовательский тип записи для местоположений на своем сайте и хотел бы отображать каждую запись полностью с помощью шорткода. Я довольно нов в создании шорткодов и борюсь с пониманием этого. Я хочу отображать запись по слагу вот так: [stefan_location slug=”Aspley”], но у меня не получается это сделать. Я знаю, что, наверное, очень далек от правильного решения, поэтому любые советы будут приветствоваться!!

function cpt_content_func($atts){
    $post="";
    $content="";
    extract( shortcode_atts( array(
        'slug' => null,
    ), $atts ) );
    $args = array(
        'name' => $slug,
        'post_type' => 'location',
        'numberposts' => 1
    );
    $post = get_posts( $args );
    if ( !empty( $post ) ) {
        $content = $post[0]->post_content;
    }
    return $content;
}
add_shortcode('stefan_location','stefan_location');

  • Вы ввели второй параметр в add_shortcode неверно, вам не хватает вызываемой функции в параметре.
  • Как показано ниже, добавьте этот шорткод с параметром.

add_shortcode( string $tag, callable $callback );

Код :

function cpt_content_func($atts){
    $post="";
    $content="";
    extract( shortcode_atts( array(
        'slug' => null,
    ), $atts ) );
    $args = array(
          'post_type' => 'location', 
          'posts_per_page' => 1, 
          'post_name__in' => $atts['slug'] ); 

    $post = get_posts( $args );
    if ( !empty( $post ) ) {
        $content = $post[0]->post_content;
    }
    return $content;
}
add_shortcode('stefan_location','cpt_content_func');

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

Чтобы отобразить записи кастомного типа на вашем сайте WordPress с помощью короткого кода, необходимо создать правильный PHP-код для обработки шорткода, который вы хотите использовать. В данном случае вы хотите использовать шорткод вида [stefan_location slug="Aspley"] для отображения записи с определённым слагом. Давайте разберемся, как это сделать шаг за шагом.

1. Создание функции для шорткода

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

function cpt_content_func($atts){
    $atts = shortcode_atts( array(
        'slug' => null,
    ), $atts );

    if (empty($atts['slug'])) {
        return 'Ошибка: отсутствует слаг.';
    }

    $args = array(
        'post_type' => 'location',
        'name' => $atts['slug'],
        'posts_per_page' => 1,
    );

    $post = get_posts($args);
    $content = '';

    if (!empty($post)) {
        $content = apply_filters('the_content', $post[0]->post_content); // Применяем фильтры содержимого
    } else {
        $content = 'Запись не найдена.';
    }

    return $content;
}
add_shortcode('stefan_location', 'cpt_content_func');

2. Объяснение кода

  • Функция shortcode_atts: Эта функция позволяет установить значению атрибутов значение по умолчанию. Если слаг не указан, будет возвращено сообщение об ошибке.
  • Параметры $args: Указываем, что нам нужны посты типа location с заданным слагом. Используем posts_per_page для ограничения количества записей до одной.
  • get_posts: Функция, которая получает массив постов на основе заданных аргументов.
  • Контент: Если пост существует, мы обрабатываем его содержимое через apply_filters('the_content', ...) для применения всех встроенных фильтров и шорткодов. Если пост не найден, выводится сообщение об этом.

3. Использование шорткода

Теперь, когда вы сохранили этот PHP-код в файле вашей темы (например, в functions.php), вы можете использовать шорткод в редакторе постов или страниц:

[stefan_location slug="Aspley"]

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

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

Заключение

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

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

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