Désolé pour la question idiote, je suis novice dans Wordpress et PHP. J'ai créé un type de message personnalisé à l'aide de this tutorial. La page de catégorie fonctionne normalement, mais le single affiche tous les articles de la catégorie. J'ai besoin d'afficher uniquement les messages en cours sur le modèle single.php. Comment puis-je faire ceci? Voici le code de mon fichier single.php dans le plugin de critiques de films.
<?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(); ?>
Et ce code définit les fichiers modèles:
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 );
Votre single.php est codé de manière à afficher toutes les publications, telles que archive, il doit être modifié.
Pour récupérer le post actuel, essayez plutôt quelque chose comme ça:
<?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(); ?>
Voici la documentation correspondante: https://codex.wordpress.org/Post_Type_Templates
single- {post_type} .php
Si votre type de message personnalisé était "produit" et/ou query_var = "produit", WordPress rechercherait single-product.php pour afficher le lien unique ou le lien permanent qui y est associé.
Essayez d’utiliser l’argument posts_per_page
dans votre WP_Query et de le définir sur 1
:
$mypost = array( 'post_type' => 'movie_reviews', 'posts_per_page' => 1);
$loop = new WP_Query( $mypost );
// ...stuff and things