昨日、Custom Post Type UIを使って、カスタム投稿で管理画面にカスタム投稿のメニューを追加する方法を書きました。実はこれだけでは、終わりません。対象のphpファイルにループを回すコートを記述する必要があります。
通常の投稿もいくつかある投稿を紐付けて表示するためにループを回しています。
1月13日 このブログで書きました。
1月13日 WordPress ループを回す
投稿をループで回すコード例
if ( have_posts() ) :
while ( have_posts() ) : the_post(); // ここに投稿の表示に関するコードを記述
the_title(); // 投稿のタイトルを表示
the_content(); // 投稿のコンテンツを表示
endwhile;
else : // 投稿がない場合のコンテンツ
endif;
カスタム投稿は上記を応用した形になります。
昨日 登録したスペシャルメニューを例として、コードを書いてみます。
まず、スペシャルランチメニューの条件を関数で設定します。
その後、できた変数を使って、サブループを回します。
<?php
// スペシャルランチの関数設定
$special-lunch_args = array(
‘post_type’ => ‘special-lunch’, //上の画像の投稿タイプスラッグの部分と合わせることで
カスタム投稿タイプ「special-lunch」の投稿を取得することを
指定します//
‘post_status’ => ‘publish’, //公開済みの投稿のみを取得することを指定します//
‘posts_per_page’ => 8, //一度に表示する投稿の数を8に制限します。//
);
//サブループを回す
$special-lunch_query = new WP_Query($special-lunch_args); ?>
//new WP_Queryはサブループを作る決まっているフレーズ//
<?php if ($special-lunch_query >have_posts()) : ?>
<?php while ($special-lunch_query >have_posts()) : ?>
<li class=”p-lunch-menu__card-item”>
<?php $special-lunch_query>the_post(); ?>
<div class=”p-p-lunch-menu__img”>
<?php if (has_post_thumbnail()) : ?>
<?php the_post_thumbnail(); ?>
<?php else : ?>
<img src=”<?php echo get_template_directory_uri(); ?>/img/noimg.png” alt=””>
?php endif; ?>
</div> <!– p-p-lunch-menu__img –>
<div class=”p-lunch-menu__name”><?php the_title(); ?></div>
<div class=”p-lunch-menu__price”><?php the_excerpt(); ?></div>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
//wp_reset_postdata();
を呼び出すことで、グローバルな投稿データを元に戻します。これにより、このクエリによる変更が他のクエリに影響を与えることを防ぎます。//
</li><!– p-lunch-menu__card-item –>
上記、あくまでも例ですが、上記のようなコードを記述することにより、通常の投稿のように、入力した画面を動的に表示することが可能になります。