• 解決済 tatamimi

    (@tatamimi)


    phpがあまりわからないままなんとかカスタマイズしている者です。
    ご指南いただけると大変助かります。

    各記事のサイドメニューに、その記事の属するカテゴリの一覧を掲載したいのですが
    その順番を、「今表示している記事」を先頭に、降順もしくは昇順にすることは可能でしょうか?
    ソースは以下のものを利用しています。
    &showposts=100を使っていますが、同カテゴリ全部の記事を表示したい場合の方法もご指南いただければ嬉しいです。

    <?php foreach((get_the_category()) as $cat) {
    $cat_id = $cat->cat_ID ;
    break ;
    }
    $query = ‘cat=’ . $cat_id. ‘&showposts=100’;
    query_posts($query) ;
    ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
     <?php the_title(); ?>
    <?php endwhile; endif; ?>
    <?php wp_reset_query(); ?>

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    同カテゴリ全部の記事を表示したい場合の方法

    件数指定を-1にすればOK!

    その他、ヒントはすべてここ↓にありますよ~
    http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    あと、「各記事のサイドメニュー」で使うなら、query_postsじゃなくてget_postsの方がいいかも

    また、

    「今表示している記事」を先頭に

    ということですと、その記事の日付を動的に取得して変数に放り込むといった、PHPのカスタマイズが必要になりますが、心の準備はよろしいでしょうか??

    参考:[解決済み] query_postsで期間を指定しての記事の表示

    トピック投稿者 tatamimi

    (@tatamimi)

    >mypacecreator様

    早速のご返答ありがとうございます!

    >件数指定を-1にすればOK!

    query postsのページ、きちんと読んでいませんでした・・・
    ありがとうございます。
    「query_postsじゃなくてget_posts」の件も書いてありますね。
    今のところquery_postsでも動いているのですが
    リファレンスとにらめっこして書き直してみようと思います。

    「今表示している記事」を先頭に

    というのは難しそうですね・・・
    できることならなんとかしたいのですが・・・

    とりいそぎは直せるところから直していこうと思います。
    お忙しいとは思いますが引き続きアドバイスを頂けるようでしたら、
    どうぞよろしくお願い致します。

    テーマフォルダの functions.php に以下をコピペ:

    <?php
    function my_posts_where( $where, $query ) {
      global $wpdb, $post;
    
      if ( 'DESC' == $query->query_vars['order'] )
        $where .= $wpdb->prepare( " AND $wpdb->posts.post_date < %s", $post->post_date );
      else
        $where .= $wpdb->prepare( " AND $wpdb->posts.post_date > %s", $post->post_date );
    
      return $where;
    }
    
    function my_get_posts( $args ) {
      global $post;
    
      $args = wp_parse_args( $args, array(
        'suppress_filters'	=> false,
        'tax_query' => array(
          array(
            'taxonomy' => 'category',
            'terms'    => wp_get_object_terms( $post->ID, 'category', array( 'fields' => 'ids' ) )
          ),
        ),
      ) );
    
      add_filter( 'posts_where', 'my_posts_where', 10, 2 );
      $posts = get_posts( $args );
      remove_filter( 'posts_where', 'my_posts_where', 10, 2 );
      return $posts;
    }
    ?>

    記事一覧を表示するところのコード例:

    <?php
    $ps = my_get_posts( 'order=ASC&posts_per_page=-1' ); // これでお求めの記事を取得
    foreach ( $ps as $post ) {
      setup_postdata( $post );
    ?><p><?php the_title(); the_time( ' Y.m.d. H.i.s' ) ?></p><?php
    }
    wp_reset_postdata();
    ?>

    ※コードを貼付ける時は複数の <?php?> が入れ子にならないように注意。

    トピック投稿者 tatamimi

    (@tatamimi)

    kz 様

    ありがとうございます!
    いただいたソースで動きました!!!!!

    それにしても・・・PHPがわからず、だと全く手が出ない範囲なのがよくわかりました・・・
    短時間の間に親切にも複雑な内容、コードを教えてくださるプログラマの皆様には脱帽です。
    本当にありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「同カテゴリ記事一覧の出力順を「今表示している記事」からにしたい」には新たに返信することはできません。