これが私が持っているコードです。キャンペーンとして知られる100個のカスタム投稿を表示しています。現在のユーザーのみを表示するために必要です。だから作者/ジョーはジョーのキャンペーンだけを見せるべきです。
<?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; ?>
query_posts
を使用しないでください。そのため、メインクエリの代わりにカスタムクエリを使用してください。それは常に問題があり、それを解決するより多くの問題を生み出します。
メインクエリを使用し、必要に応じてメインクエリを変更するためにpre_get_posts
を使用します。
あなたの問題を解決するために、query_posts
行を削除してください、これは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; ?>
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' );
}
});
これであなたの問題は解決するはずです
WP_Queryを使用して問題が発生しません...
これは作者パラメータを持ちます。
$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();
お役に立てれば。