如何限制与作者相关的帖子上市?

时间:2016-11-09 作者:Muhammed

解决方案<?php query_posts(\'posts_per_page=9\'); ?> 要限制与作者相关的帖子,请显示整个网站帖子:(

  <?php
    $curauth = (isset($_GET[\'author_name\'])) ? get_user_by(\'slug\', $author_name) : get_userdata(intval($author));
  ?>
  <h2>About: <?php echo $curauth->nickname; ?></h2>
  <dl>
    <dt>Website</dt>
    <dd><a href="<?php echo $curauth->user_url; ?>"><?php echo $curauth->user_url; ?></a></dd>
    <dt>Profile</dt>
    <dd>
      <?php echo $curauth->user_description; ?>
    </dd>
  </dl>

  <h2>Posts by <?php echo $curauth->nickname; ?>:</h2>

  <ul>
    <?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>,
        <?php the_time(\'d M Y\'); ?> in
          <?php the_category(\'&\');?>
      </li>

      <?php endwhile; else: ?>
        <p>
          <?php _e(\'No posts by this author.\'); ?>
        </p>    
      <?php endif; ?>
  </ul>

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

从不never 重新查询本机存档-使用pre_get_posts hook 要更改主查询,请执行以下操作:

add_action( \'pre_get_posts\', function ( $wp_query ) {
    if ( $wp_query->is_main_query() && $wp_query->is_author() ) {
        $paged = max( 1, ( int ) $wp_query->get( \'paged\' ) );

        if ( $paged === 1 ) {
            $wp_query->set( \'posts_per_page\', 10 );
        } else {
            $wp_query->set( \'posts_per_page\', 9 );
            $wp_query->set( \'offset\', ( ( $paged - 1 ) * 9 ) + 1 );
        }
    }
});
将以上内容添加到functions.php 并删除query_posts( ... ) 线

SO网友:Benoti

要创建辅助列表(例如,页面底部的相关帖子列表,或侧栏小部件中的链接列表),请尝试创建WP\\u Query的新实例或使用get\\u posts()。

为什么?query\\u posts()用于更改主循环。它通过替换用于生成主循环内容的查询来实现。

信息来自developer.wordpress.org query_posts()

因此,在代码中,您需要创建一个新查询,

$related_query = get_posts(array(
                     \'post_type\'=> \'post\',
                     \'post_status\'=> \'publish\',
                     \'post_author\'=> $curauth,// must be the id
                     \'posts_er_page\'=> 9,  
                     )
);
if ( $related_query ) {
foreach ( $related_query as $post ) :
    setup_postdata( $post ); ?>
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <?php the_content(); ?>
    <?php
    endforeach; 
    wp_reset_postdata();
}             

相关推荐

如何修改WP_INCLUDE/BLOCKS/LATEST_posts.php

我是WordPress开发的初学者,希望得到一些帮助。我在一个简单的WordPress网站上工作。基本上,用户希望在主页上显示最新的帖子。我使用了最新帖子块,并将其设置为显示整个帖子内容,现在用户不希望帖子标题链接到单个帖子页面(因为帖子的内容显示在主页上)。如何安全地修改模板文件,使其像h2标记一样使用,而不是在主题中使用的href标记。我知道您可以创建子主题并修改wp_content 文件,但我不确定如何处理中的文件wp_include. 我读到一些关于修改functions.php 但我不确定,如果