1

私は自分の問題の解決策を何時間も探していました。私が達成しようとしているものとまったく同じものを見つけることができなかったので、本当に行き詰まっており、助けていただければ幸いです!

「マガジン」と呼ばれる CPT があり、いくつかの ACF フィールドがあります。1 つの ACF フィールドは、雑誌が発行された「年」です。もう 1 つのフィールドは、一意の ID のような「雑誌番号」です。毎年、いくつかの雑誌が発行されています。

私が達成しようとしているのは、対応する「年」に発行された、「年」ごとに「ul」要素と「雑誌番号」ごとに「li」要素を与える出力です。

たとえば、次のようにします。

<ul class="2019">
   <li>200</li>
   <li>199</li>
   <li>198</li>
   <li>197</li>
   <li>196</li>
</ul>

<ul class="2018">
   <li>195</li>
   <li>194</li>
   <li>193</li>
   <li>192</li>
   <li>191</li>
</ul>

論理的には、この問題にどのように取り組むべきかわかりません。上記のように、フィールドを相互参照し、すべての「年」フィールド (複数あります) を 1 つの出力に減らし、特定の年に発行されたすべての「雑誌番号」を出力し、各年に複数のリストを出力するにはどうすればよいですか?

4

2 に答える 2

0

このようなことを試すかもしれません。私には、最初にすべての年を取得してから、年ごとにクエリを実行して雑誌番号を取得する必要があるようです。これがあなたのサーバーでどれほど集中するかはわかりませんが、試してみる必要があります. フィールド名を調整する必要がある場合があります。

<?php

global $post;

$args = array(

   'post_type' => 'magazine'

);

$posts = new WP_Query($args); // Query posts of 'magazine' post type

$magazine_years = array(); // set up array to put years in

if ($posts) {

   foreach ($posts as $post) {

      setup_postdata( $post );

      $the_year = get_field('year'); // get the value of year field
      $magazine_years[] = $the_year; // add year to the array

   }


}

wp_reset_postdata(); // reset the query so we dont introduce a problem with more queries

foreach ($magazine_years as $year) {

// do a query for each year

   $args = array(

      'post_type' => 'magazine',
      'meta_key' => 'year',
      'meta_value_num' => $year

   );

   $posts = new WP_Query($args);

   if ($posts) { ?>

  <!-- create your list -->

    <h1><?php echo $year; ?></h1>
    <ul class="<?php echo $year; ?>">

<?php foreach($posts as $post) {

         setup_postdata( $post );
         <li><php the_field('magazine_number'); ?></li>

      } ?>

    </ul>

<?php   

  }

 // reset the query data so you can run another without issue

  wp_reset_postdata();

}
于 2019-10-14T20:05:46.337 に答える