web-dev-qa-db-fra.com

Comment afficher une publication unique à partir d'une boucle de type de publication personnalisée?

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 );
1
A. Korolev

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(); ?>
0
Ahmed Fouad

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é.

0
RyanCameron.Me

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
0
FaCE