Как я бы создал шорткод для отображения пользовательской публикации на странице или обычного поста?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/9729

Вопрос

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

Конкретный вариант использования: у меня есть пользовательский фильм «Фильм» для веб -сайта кинофестиваля. Фильмы отображаются с помощью собственного однофильтного M.Php, но иногда владельцы сайтов хотят написать пост или страницу, в которой упоминается конкретный фильм, и хотели бы иметь возможность вытащить фрагменты информации, которая уже была введена (например, , Название фильма, информация о бронировании и т. Д.). Это пойдет в «коробку» внизу поста, и я хотел бы облегчить им, предоставив какой -то шорт -код.

Как бы я это сделал? Какие -нибудь рекомендуемые ресурсы/учебные пособия, чтобы получить меня на правильном пути? О чем я должен знать (например, несколько петель в посте)?

Это было полезно?

Решение

Есть отличные учебные пособия о шортах по всему Интернету и несколько хороших примеров здесь

Но просто чтобы начать:

add_shortcode('film_q', 'film_shortcode_query');
function film_shortcode_query($atts, $content){
  extract(shortcode_atts(array( // a few default values
   'posts_per_page' => '1',
   'post_type' => 'film',
   'caller_get_posts' => 1)
   , $atts));

  global $post;

  $posts = new WP_Query($atts);
  $output = '';
    if ($posts->have_posts())
        while ($posts->have_posts()):
            $posts->the_post();
            $out = '<div class="film_box">
                <h4>Film Name: <a href="'.get_permalink().'" title="' . get_the_title() . '">'.get_the_title() .'</a></h4>
                <p class="Film_desc">'.get_the_content().'</p>';
                // add here more...
            $out .='</div>';
    /* these arguments will be available from inside $content
        get_permalink()  
        get_the_content()
        get_the_category_list(', ')
        get_the_title()
        and custom fields
        get_post_meta($post->ID, 'field_name', true);
    */
    endwhile;
  else
    return; // no posts found

  wp_reset_query();
  return html_entity_decode($out);
}

и использовать его введите в любом сообщении/странице:

[film_q p=FILM_POST_ID]

Просто измените FILM_POST_ID на фактический идентификатор поста фильма.

Надеюсь это поможет

Другие советы

Попробуйте начать с этот урок.

В функции обратного вызова, сделайте custom_query (или используйте get_post) для поста и извлечь только те значения, которые соответствуют вам. (Т.е. заголовок, выдержка ...)

Пример Шор

[film id=10]

Используйте идентификатор в своей функции для поиска содержания фильма.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top