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; ?>
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_Query
instead:
$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.