Voici le code que j'ai. Il montre 100 post personnalisé appelé campagnes. J'en ai besoin pour ne montrer que les utilisateurs actuels. Donc, l'auteur/joe devrait seulement montrer les campagnes de joe.
<?php
if(isset($_GET['author_name'])) :
$curauth = get_userdatabylogin($author_name);
else :
$curauth = get_userdata(intval($author));
endif;
?>
<h2>Campaigns by <?php echo $curauth->nickname; ?>:</h2>
<?php
$args = array(
'posts_per_page' => 100,
'post_type' => 'campaigns'
);
query_posts($args);
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<li>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>">
<?php the_title(); ?></a>,
</li>
<?php endwhile; else: ?>
<p><?php _e('No posts by this author.'); ?></p>
<?php endif; ?>
N'utilisez pas query_posts
, et d'ailleurs aucune requête personnalisée ne remplacera la requête principale. C'est toujours problématique et cela crée plus de problèmes que de le résoudre.
Utilisez la requête principale et utilisez pre_get_posts
pour modifier la requête principale selon vos besoins.
Pour résoudre votre problème, supprimez la ligne query_posts
, voici à quoi devrait ressembler author.php.
<?php
if(isset($_GET['author_name'])) :
$curauth = get_userdatabylogin($author_name);
else :
$curauth = get_userdata(intval($author));
endif;
?>
<h2>Campaigns by <?php echo $curauth->nickname; ?>:</h2>
<?php
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<li>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>">
<?php the_title(); ?></a>,
</li>
<?php endwhile; else: ?>
<p><?php _e('No posts by this author.'); ?></p>
<?php endif; ?>
Ajoutez ce qui suit dans votre fichier functions.php
add_action( 'pre_get_posts', function ( $q ) {
if( !is_admin() && $q->is_main_query() && $q->is_author() ) {
$q->set( 'posts_per_page', 100 );
$q->set( 'post_type', 'campaigns' );
}
});
Cela devrait résoudre votre problème
Je ne vois pas le problème d'utilisation de WP_Query ...
Il a un paramètre auteur.
$cuser_id = get_current_user_id();
$args = array(
'post_type' => 'campaigns',
'posts_per_page' => 100,
'author' => $cuser_id,
);
$the_query = new WP_Query($args);
if ($the_query->have_posts()) {
while ($the_query->have_posts()) {
$the_query->the_post();
// BUILD AND DISPLY CAMPAIGN DATA
$pid = get_the_ID();
$ptitle = get_the_title();
$plink = get_permalink();
echo '<li><a href="'.$plink.'">'.$ptitle.'</a></li>';
}
} else {
echo 'You have published any campaigns yet';
}
wp_reset_postdata();
J'espère que cela t'aides.