2014-02-20 78 views
2

我正在使用wordpress插件 - 'bbpress'來使用論壇。以下代碼來自文件如何將參數傳遞給bbp_topics()in wordpress插件 - 'bbpress'

/projectname/wp-content/plugins/bbpress/templates/default/bbpress/loop-topics.php 

現在論壇工作正常。但我需要添加自定義代碼,以便根據日期排序,答覆數量以及按ASC或DESC順序按字母順序排列。所以你可以看到我在那裏添加了下面的代碼塊。

$bbp_loop_args = array(
    'orderby' => 'date', 
    'order' => 'DESC', 
    ); 

而且這個$ bbp_loop_args參數與'while()'一起發送。以下是完整的代碼。

<?php 

/** 
* Topics Loop 
* 
* @package bbPress 
* @subpackage Theme 
*/ 

?> 

<?php do_action('bbp_template_before_topics_loop'); ?> 
<?php 
if(bbp_get_forum_topic_count()>0) 
    {  

     $bbp_loop_args = array(
     'orderby' => 'date', 
     'order' => 'DESC', 
     ); 
     ?> 
<ul id="bbp-forum-<?php bbp_forum_id(); ?>" class="bbp-topics"> 

<li class="bbp-header"> 

    <ul class="forum-titles"> 
     <li class="bbp-topic-title"><?php _e('Topic', 'bbpress'); ?></li> 
     <li class="bbp-topic-voice-count"><?php _e('Voices', 'bbpress'); ?></li> 
     <li class="bbp-topic-reply-count"><?php bbp_show_lead_topic() ? _e('Replies', 'bbpress') : _e('Posts', 'bbpress'); ?></li> 
     <li class="bbp-topic-freshness"><?php _e('Freshness', 'bbpress'); ?></li> 
    </ul> 

</li> 

<li class="bbp-body"> 

    <?php while (bbp_topics($bbp_loop_args)) : bbp_the_topic(); ?> 

     <?php bbp_get_template_part('loop', 'single-topic'); ?> 

    <?php endwhile; ?> 

</li> 

<li class="bbp-footer"> 

    <div class="tr"> 
     <p> 
      <span class="td colspan<?php echo (bbp_is_user_home() && (bbp_is_favorites() || bbp_is_subscriptions())) ? '5' : '4'; ?>">&nbsp;</span> 
     </p> 
    </div><!-- .tr --> 

</li> 

</ul> 
    <?php } ?> 
    <!-- #bbp-forum-<?php bbp_forum_id(); ?> --> 

<?php do_action('bbp_template_after_topics_loop'); ?> 

但我不知道我在做什麼錯。論壇工作正常,但我傳遞的參數似乎不工作,因此排序不工作。任何人都可以快速回復這個問題嗎?謝謝。

回答

9

試試這個 - 替換這是你的循環代碼,

<li class="bbp-body"> 
    <?php if (bbp_has_topics($bbp_loop_args)) : ?> 
     <?php while (bbp_topics()) : bbp_the_topic(); ?> 

      <?php bbp_get_template_part('loop', 'single-topic'); ?> 

     <?php endwhile; ?> 
    <?php endif;?> 
</li> 

這可能是工作......

默認參數數組的主題: -

$default = array(
    'post_type' => bbp_get_topic_post_type(), // Narrow query down to bbPress topics 
    'post_parent' => $default_post_parent, // Forum ID 
    'meta_key' => '_bbp_last_active_time', // Make sure topic has some last activity time 
    'orderby' => 'meta_value', // 'meta_value', 'author', 'date', 'title', 'modified', 'parent', rand', 
    'order' => 'DESC', // 'ASC', 'DESC' 
    'posts_per_page' => bbp_get_topics_per_page(), // Topics per page 
    'paged' => bbp_get_paged(), // Page Number 
    's' => $default_topic_search, // Topic Search 
    'show_stickies' => $default_show_stickies, // Ignore sticky topics? 
    'max_num_pages' => false, // Maximum number of pages to show 
); 
+0

是的,這是工作。非常感謝。 – user1638279

+0

@Akshya - 還有一件事。你能否告訴我如何按「答覆次數」排序。我的意思是,如果DESC的話,帖子會有更高的回覆。那麼我必須傳遞數組$ bbp_loop_args - 'orderby'的值?而我必須通過按字母順序排列主題? – user1638279

+0

我不知道'答覆的數量',但我在我的答案中添加了默認參數... –

4

能't評論,因爲我的代表< 50所以這裏是它的第2部分作爲答案:/

按回複數排序:

$bbp_loop_args = array(
    'meta_key' => '_bbp_reply_count', 
    'orderby' => 'meta_value_num' 
    ); 
+0

是的,那是工作'答覆的數量'。謝謝。 – user1638279