サポート » 使い方全般 » 特定のカテゴリーにて年別アーカイブとカスタムフィールドアーカイブの混在

  • imasa

    (@imasa)


    google検索/フォーラム検索をして、どうにかやってみようとしているのですがイマイチ解決方法が掴めず投稿させていただきます。
    通常の「投稿」にて大きくニュース/イベントとカテゴリ分けしています。
    この度、ニュースの方にて年別がうまく動いておらず四苦八苦しています。

    category.php

    
    <?php
    if ( in_category( 'news' ) || post_is_in_descendant_category( get_term_by( 'slug', 'news', 'category' ) ) ) {
      get_template_part( 'category', 'news' );
    } elseif ( in_category( 'events' ) || post_is_in_descendant_category( get_term_by( 'slug', 'events', 'category' ) ) ) {
      get_template_part( 'category', 'events' );
    } else {
    }
    ?>
    

    category-news.php

    
    <ul class="newslist">
      <?php
      $args = array(
        'post_type' => '',
        'category_name' => 'news',
        'posts_per_page' => 10,
        'paged' => $paged,
        'meta_query' => array(
          array(
            'key'=>$_GET['key'],
            'value'=>$_GET['value'],
            'compare'=>'LIKE'
          )
        )
      );
      ?>
      <?php query_posts( $args ); ?>
      <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <?php get_template_part( 'partials/content', 'news', get_post_format() ); ?>
      <?php endwhile; endif; ?>
    </ul>
    <?php wp_reset_query(); ?>
    

    このようにcategory-news.phpではカスタムフィールドでソートできるようにクエリを指定しています。
    それと併用し年別アーカイブも表示させたいと考えています。
    年別の場合にはカスタムフィールドソートは全く考えないで良いため、シンプルにarchive.phpにて

    
    <ul class="newslist">
      <?php
      $args = array(
        'post_type' => '',
        'category_name' => 'news',
        'posts_per_page' => 10,
        'paged' => $paged
      );
      ?>
      <?php query_posts( $args ); ?>
      <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <?php get_template_part( 'partials/content', 'news', get_post_format() ); ?>
      <?php endwhile; endif; ?>
    </ul>
    <?php wp_reset_query(); ?>

    このように指定してもうまくいかず。。

    なにか分岐が必要かとは思うのですが、取っ掛かりがつかめず。
    アドバイスいただけますと助かります。

    宜しくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • LABE

    (@latobeam)

    うまくいかず、とは具体的にはどのような状態でしょうか。
    get_template_part() でテンプレートファイルを呼び出していますが、そちらのほうに問題があるならそちらもご提示いただかないと助言できないかもしれません。

    そして query_posts() は非推奨の関数で、使うべきではありません。
    コードを見る限りでは、代わりに pre_get_posts アクションで実現できると思います。

    トピック投稿者 imasa

    (@imasa)

    @labeさま

    コメントありがとうございます!
    pre_get_postsにて再考し、またこちらにてご報告させていただきます。

    imasaさん

    このクエリーの場合、カスタムフィールドがどのようなタイプなのかによって組み方が変わると思うのですが。

    ラジオボタンやチェックなどなのか、数値なのかで変わってきます。
    関数リファレンスのように一度生の値で試されてはいかがでしょうか。

    下記のようにって意味です($_GET[‘value’]とかではなくです)
    また数値型ならば「BETWEEN」や「不等式」が必要だと思われますので
    スタンダードな状態から、原因の箇所を探っていくのが近道かと思われます。

    
    $args = array(
    	'post_type'  => 'product',
    	'meta_query' => array(
    		array(
    			'key'     => 'color',
    			'value'   => 'blue',
    			'compare' => 'NOT LIKE',
    		),
    		array(
    			'key' => 'price',
    			'value'   => array( 20, 100 ),
    			'type'    => 'numeric',
    			'compare' => 'BETWEEN',
    		),
    	),
    );
    $query = new WP_Query( $args );
    
    
    トピック投稿者 imasa

    (@imasa)

    @mura0403さま

    コメントありがとうございます。
    今回はチェックボックスでのカスタムフィールドの値をURLに加えることでのソートとカスタムフィールド関係なしでの年別表示の実装をめざしています。
    一度、pre_get_postsにする変更と、いただきました生の値での調整をしたいと思います。

    ごにょごにょとやりすぎて、私自身でもわからなくなってきてもいるので、一度整理します。。

    ありがとうございます!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「特定のカテゴリーにて年別アーカイブとカスタムフィールドアーカイブの混在」には新たに返信することはできません。