web-dev-qa-db-ja.com

ページまたは通常の投稿内にカスタム投稿を表示するためのショートコードを作成するにはどうすればよいですか。

カスタム投稿の情報を抽出し、ページまたは通常の投稿内に表示するためのショートコードを作成したいと思います。

特定のユースケース:私は映画祭ウェブサイトのためのカスタム投稿タイプ "Film"を持っています。映画は独自のsingle-film.phpで表示されていますが、サイトの所有者が特定の映画について言及している投稿やページを作成したい場合があります。 、映画名、予約情報など)これは記事の一番下にある「ボックス」の中に入ります。私はある種のショートコードを提供することでそれらを簡単にしたいと思います。

これをどのようにして行うのでしょうか。正しい軌道に乗せるための推奨リソース/チュートリアルはありますか?私が知っておくべきことは何でしょうか(例:投稿内の複数のループ)?

1
Amanda

ショートコードについての素晴らしいチュートリアルと、いくつかの良い例があります ここ

しかし、あなたが始めるためだけに:

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を実際のフィルム投稿IDに変更するだけです。

お役に立てれば

5
Bainternet

このチュートリアル から始めてみてください。

コールバック関数で、投稿に対してcustom_queryを実行し(または get_post を使用し)、自分に関連のある値のみを抽出します。 (タイトル:抜粋...)

ショーコードの例

[film id=10]

映画のコンテンツを検索するには、あなたの関数でidを使用してください。

0
keatch