愚かな質問ですみません、私は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 );
あなたの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(); ?>
これがそのドキュメントです。 https://codex.wordpress.org/Post_Type_Templates
single- {post_type} .php
あなたのカスタム投稿タイプが 'product'またはquery_var = "product"の場合、WordPressはsingle-product.phpを検索して投稿の単一またはパーマリンクを表示します。
WP_Queryでposts_per_page
引数を使用し、それを1
に設定してみます。
$mypost = array( 'post_type' => 'movie_reviews', 'posts_per_page' => 1);
$loop = new WP_Query( $mypost );
// ...stuff and things