1

wordpress をよく知っている人への最初の質問: リソース/システムの負荷に関しては、mysql に直接クエリを実行し、そこで結果を並べ替える方がよいでしょうか? または wordpress フック WP_query を使用してすべての投稿を取得し、コメント変数に従って並べ替えますか?

私はこのコードを持っています、それはすべてをフェッチします。comments_number( '0', '1', '%' );このリストを(コメントの多いものを上に) 並べて、表示される合計数を上位 4 つに制限したいと思います。

これまでの私のコード:

 <ul>
    <?php

    global $post;
    $all_events = tribe_get_events(
      array(
        'eventDisplay'=>'upcoming',
        'posts_per_page'=>-1
    )
    );

    foreach($all_events as $post) {
    setup_postdata($post);
    ?>

    <li>
          <a title="<?php the_title(); ?>" href="<?php the_permalink(); ?>">
                    <?php
                      if ( has_post_thumbnail () ) {
                          echo get_the_post_thumbnail(array(100,100));
                      } else {
                          echo '<img width="100" height="100" alt="'
                               .get_the_title().'" title="'
                               .strip_tags(get_the_excerpt()).'" src="'
                               .get_bloginfo('template_url')
                               .'/thumbs/event-recent-thumb-na.png">';
                      }
                    ?>
          </a>

          <h3><a title="<?php the_title(); ?>" href="<?php the_permalink(); ?>">
              <?php the_title(); ?></a></h3>
          <span><?php echo tribe_get_start_date( $p->ID, true, 'M j, D.' ) . " - "
                         . tribe_get_end_date( $p->ID, true, 'D.' ); ?></span>
          <p><?php echo strip_tags(get_the_excerpt()); ?></p>
          <span class="eventinterested"><?php comments_number( '0', '1', '%' ); ?>
          <?php _e('interested so far','holidayge'); ?></span>
    </li>

    <?php } //endforeach ?>

          <?php wp_reset_query(); ?>

 </ul>

そこにリストを変更foreachして注文する方法はありますか? 私はphpプログラマーではありませんが、論理的に思えます...私はSortのように見える正しい解決策について読んでいますか?

4

1 に答える 1

0

MySQL は PHP よりもクエリではるかに高速であるため、必要以上の投稿を要求しないようにする必要があります。すべての投稿を PHP にロードすると、うまくスケーリングされません。

tribe_get_events() は get_posts() を使用していると思います。それが正しければ、これでうまくいくはずです:

$all_events = tribe_get_events(
    array(
        'eventDisplay'   => 'upcoming',
        'posts_per_page' => 4,
        'orderby'        => 'comment_count',
        'order'          => 'DESC'
    )
);

詳細については、 get_posts() に関するドキュメントを参照してください

于 2012-09-19T04:45:52.403 に答える