如何在Auths.php文件中为用户显示自定义帖子类型?

时间:2015-01-22 作者:JediTricks007

这是我的密码。它显示了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; ?>

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

不使用query_posts, 因此,可以使用任何自定义查询来替换主查询。它总是有问题的,它会产生比解决它更多的问题。

使用主查询并使用pre_get_posts 根据需要更改主查询。

要解决您的问题,请删除query_posts 行,这是作者的方式。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\' );

    }

});
这应该可以解决你的问题

SO网友:Sagive

i dont see the problam in using WP_Query...
它有一个author参数。

$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();
希望这有帮助。

结束

相关推荐

Change posts list Breadcrumb

我在“设置”>“阅读”>“文章”页面(名为“博客”的页面)中设置了一个自定义页面。这不是我的主页,但NavXT面包屑只显示“主页”。我希望它显示页面标题:“主页>博客”。我怎样才能做到这一点?