web-dev-qa-db-ja.com

カスタム投稿タイプループから単一の投稿を表示する方法

愚かな質問ですみません、私はWordpressとPHPの初心者です。 this tutorialを使用してカスタム投稿タイプを作成しました。カテゴリページは正常に機能していますが、シングルはカテゴリからのすべての投稿を表示しています。私はsingle.phpテンプレートに現在の投稿のみを表示する必要があります。これどうやってするの?これは映画レビュープラグインの中の私のsingle.phpファイルのコードです。

    <?php
get_header(); ?>
<section id="content">
    <div class="wrap-content blog-single">
    <?php
    $mypost = array( 'post_type' => 'movie_reviews', );
    $loop = new WP_Query( $mypost );
    ?>
    <?php if ($loop->have_posts()) : while ($loop->have_posts()) : $loop->the_post(); ?>
    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
       <?php the_title( '<h1>','</h1>' );  ?>
             <div class="post-thumbnail">
 <?php the_post_thumbnail(array(250, 250)); ?>
 </div>
            <div class="entry-content"><?php 
            the_content(); ?></div>
        </article>
         <?php endwhile; ?>
    <?php endif; ?>
    </div>
</section>
<?php wp_reset_query(); ?>
<?php get_footer(); ?>

そしてこのコードはテンプレートファイルを定義します。

function include_template_function( $template_path ) {
    if ( get_post_type() == 'movie_reviews' ) {
        if ( is_single() ) {
            // checks if the file exists in the theme first,
            // otherwise serve the file from the plugin
            if ( $theme_file = locate_template( array ( 'single-movie.php' ) ) ) {
                $template_path = $theme_file;
            } else {
                $template_path = plugin_dir_path( __FILE__ ) . '/single-movie.php';
            }
        } else {
             if ( $theme_file = locate_template( array ( 'movie-category.php' ) ) ) {
                $template_path = $theme_file;
            } else {
                $template_path = plugin_dir_path( __FILE__ ) . '/movie-category.php';
            }
        }
    }
  return $template_path;
}
add_filter( 'template_include', 'include_template_function', 1 );
1
A. Korolev

あなたのsingle.phpはアーカイブのようなすべての投稿を表示するようにコード化されています、それは修正される必要があります。

現在の投稿を取得するには、代わりに次のようにしてください。

<?php get_header(); ?>

<section id="content">
    <div class="wrap-content blog-single">

    <?php  while ( have_posts() ) : the_post(); ?>
        <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
            <?php the_title( '<h1>','</h1>' );  ?>
            <div class="post-thumbnail"><?php the_post_thumbnail(array(250, 250)); ?> </div>
            <div class="entry-content"><?php the_content(); ?></div>
        </article>
    <?php endwhile; ?>

    </div>

</section>
<?php get_footer(); ?>
0
Ahmed Fouad

これがそのドキュメントです。 https://codex.wordpress.org/Post_Type_Templates

single- {post_type} .php

あなたのカスタム投稿タイプが 'product'またはquery_var = "product"の場合、WordPressはsingle-product.phpを検索して投稿の単一またはパーマリンクを表示します。

0
RyanCameron.Me

WP_Queryでposts_per_page引数を使用し、それを1に設定してみます。

$mypost = array( 'post_type' => 'movie_reviews', 'posts_per_page' => 1);
$loop = new WP_Query( $mypost );
// ...stuff and things
0
FaCE