web-dev-qa-db-fra.com

Affichage des types de publication personnalisés dans author.php

J'essaie de modifier ma page author.php afin qu'elle inclue les types de publication personnalisés que l'auteur a ajoutés.

Ce qui suit est ce que j’ai là où il affiche d’abord les publications normales, puis les types de publication personnalisés (my_custom_post_type).

La première partie semble fonctionner correctement et s'affiche correctement. Cependant, la deuxième partie semble afficher TOUS les types d'articles personnalisés, et pas seulement ceux qui se rapportent à l'auteur de la page author.php.

Toute aide serait super appréciée. Je vous remercie!

<!-- Show normal posts from the author -->
<?php if ( have_posts() ): ?>
    <h3>Posts by <?php echo $curauth->first_name; ?>:</h3>
    <?php while ( have_posts() ) : the_post(); ?>
        <p><?php the_title(); ?></p>
    <?php endwhile; ?>
<?php else: ?>
    <p><?php _e('User has no posts'); ?></p>
<?php endif; ?>


<!-- Show custom post type posts from the author -->
<?php global $wp_query;
query_posts( array(
    'post_type' => 'my_custom_post_type' ,
    'author=' . $authorid,
    'showposts' => 10 )
); ?>

<?php if ( have_posts() ): ?>
    <h3>Custom post entries by <?php echo $curauth->first_name; ?>:</h3>
    <?php while ( have_posts() ) : the_post(); ?>
        <p><?php the_title(); ?></p>
    <?php endwhile; ?>
<?php else: ?>
    <p><?php _e('User has no custom posts'); ?></p>
<?php endif; ?>
2
Theo Leep

Je suppose que vous ne définissez pas $authorid nulle part, il est donc ignoré et renvoie tous les messages, quel que soit leur auteur. Si vous enable debugging , vous recevrez un avertissement vous indiquant que $authorid n'est pas défini. Il est recommandé de toujours développer avec le débogage activé pour ne pas avoir à deviner les erreurs.

En outre, n'utilisez pas query_posts pour des requêtes supplémentaires, ou jamais! Il écrase la requête principale d'origine et peut produire des résultats imprévisibles ailleurs dans votre modèle. Utilisez WP_Queryinstead:

$args = array(
    'post_type' => 'my_custom_post_type' ,
    'author' => get_queried_object_id(), // this will be the author ID on the author page
    'showposts' => 10
);
$custom_posts = new WP_Query( $args );
if ( $custom_posts->have_posts() ):
    while ( $custom_posts->have_posts() ) : $custom_posts->the_post();
        // your markup
    endwhile;
else:
    // nothing found
endif;

Notez que dans le cas d'une requête personnalisée, nous affectons des publications à $custom_posts (ou à un nom de variable unique que vous souhaitez utiliser), puis nous référençons cela dans la boucle.

3
Milo