如何在带有导航的BuddyPress个人资料上按作者显示所有帖子

时间:2012-04-12 作者:Pollux Khafra

我正在为wordpress使用Buddypress,并试图在用户的个人资料页面上显示一个循环。我使用无限滚动加载更多页面,但第2页的链接并不指向一组帖子,而是将我带到一个空白页面模板,但我确实得到了此链接。

"http://mysite.com/exampleuser/page/2"
关于如何正确制作此页面,您有什么想法吗?以下代码段位于profile-loop.php.

<?php
  global $bp;
  global $paged;
  global $wp_query;
  $temp = $wp_query;
  $wp_query = null;
  $user_id = $bp->displayed_user->id;
  $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
  $args = array(
        \'posts_per_page\' => 16,
        \'cat\' => -1,
        \'post_type\' => array( 
            \'post\',
            \'fod_videos\',
            \'fod_music\',
            \'fod_articles\',
            \'fod_albums\'  
         ),
        \'author\' => $user_id,
        \'paged\' => $paged
    );
  $wp_query = new WP_Query($args);
  while ( $wp_query->have_posts() ) :   $wp_query->the_post();
     get_template_part( \'loop\', \'contents\' );
  endwhile;
  echo \'<div class="infinitescroll">\';
    next_posts_link(\'Next\');
  echo \'</div>\';
  $wp_query = null; $wp_query = $temp;
 ?>
<script type="text/javascript">
var href = \'first\';
$(document).ready(function() {
    $(\'#boxes\').infinitescroll({
        loading: {
          finished: undefined,
          finishedMsg: \'\',
          img: \'\',
          msgText: \'\',
          speed: \'fast\',
          start: undefined
        },
        navSelector: \'.infinitescroll\',
        nextSelector: \'.infinitescroll a\',
        itemSelector: \'#boxes .box\',
        bufferPx     : 120,
        debug: false
    }, function(arrayOfNewElems) {
       var $newElems = $( arrayOfNewElems ).css({opacity: 0});
       $newElems.imagesLoaded(function(){
        $newElems.animate({opacity: 1});
        $(\'#boxes\').masonry(\'appended\', $newElems, true);
        if(href != $(\'.infinitescroll a\').attr(\'href\')) {
            href = $(\'.infinitescroll a\').attr(\'href\');
        }
      });
    });
});
</script>

2 个回复
SO网友:kubante

(顺便说一句,我是雅各布,来自温哥华)。(关键字“nice!”:)

我面临着完全相同的问题。您对infinitescroll插件的实现似乎还可以。但对我来说,这似乎不是一个不确定的问题。顺便说一句,我禁用了它,只需取消对我的项目容器的注释,当我尝试使用导航链接浏览页面时,我一进入第2页就有一个404(如果你打开了infinitescroll,这正是Firebug在控制台中吐出的东西)

我已经像Pollux一样设置了我的循环。

如果我通过

$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
来自会员/单身/家庭。php我得到

“对非对象调用成员函数get()”错误。

所以现在,我只是禁用了page参数,并通过进入永久链接设置并将其恢复为默认/?p=123

我现在可以回家了。通过URL/members/USER访问php,可以很好地查看buddypress概要文件,旁边列出了所有用户的帖子。它很好地移到了?paged=2、3、4、5等,并且infinitescroll可以处理所有事情。

但这并不是解决方案,因为我非常需要根据/示例帖子/构建permalinks,buddypress甚至希望我这样做。

我对wordpress和buddypress的世界还比较陌生,因此直到现在我都只能分享我的经验。我仍然希望布恩或其他人能从这次经历中得到启发。

很好的问候,

库班特

SO网友:Boone Gorges

我不确定你的无限卷轴脚本与WP_Query. 但根本问题似乎是您没有提供paged 的参数WP_Query, 这是负责设置您正在查看的页面的参数。如果不提供此类参数,则默认为1, 这可以描述你看到的行为。

结束