php - 从自定义字段按 values 对帖子进行分组 - values 的正确帖子编号但帖子标题相同

我想对 WP 帖子进行分组(来自 acf 字段“telechargement_type_fichier”的 values 的“dlm_download”帖子类型。

Value 1 : 帖子 1 帖子 2 帖子 3

Value 2 : 帖子 4 帖子 5 帖子 6

Value 3 : 帖子 7 帖子 8 帖子 9 ...

这是我的代码:

$field_posts = array();
$args = array(  
    'post_type' => 'dlm_download',
    'post_status' => 'publish',
);

$query = new WP_Query($args);

while ( $query->have_posts() ) {
        $query->the_post();
        $field = get_post_meta(get_the_ID(), 'telechargement_type_fichier',true);
        $field_posts[$field][] = $post;
    }

  
 wp_reset_query();

foreach ($field_posts as $field_post => $field_title) {

    echo '<p style="font-weight:bold;">' . esc_html($field_post) . '</p>';

    foreach ($field_title as $post_listing => $listing) 
    {   setup_postdata($listing);
        $id = get_the_id();
        $title = get_the_title($id);
        var_dump($title);
    }
wp_reset_postdata();
}

但是,这是我获得的结果:

Value 1 - program_scolaire

帖子 1 - 标题

帖子 1 - 标题

帖子 1 - 标题

Value 2 - 模块

帖子 1 - 标题

Value 3 - 传单

帖子 1 - 标题

帖子 1 - 标题

Value 4 - 朱

帖子 1 - 标题

帖子 1 - 标题

帖子 1 - 标题

帖子 1 - 标题

我通过现有的 values 字段获得真实的帖子编号,但相同的帖子/标题进入循环。可能是 post id 错误或“reset_postdata()”...不明白为什么。

你可以帮帮我吗 ?

谢谢 !

回答1

我对 PHP/Wordpress 不是很熟悉,但我认为你的内部 foreach 应该是这样的:

foreach ($field_post as $post_listing) 
{   setup_postdata($post_listing);
    $id = get_the_id();
    $title = get_the_title($id);
    var_dump($title);
}

或者

foreach ($field_post as $post_listing => $listing) 
{   
    var_dump($listing);
}

回答2

我找到了解决方案。

制作一个数组:

$field_posts = array();

查询您希望按字段 value 过滤的帖子,并调用 ACF 字段和您要显示的 value。

$args = array(  
    'post_type' => 'dlm_download',
    'post_status' => 'publish',
    'posts_per_page' => 20,
        );
$query = new WP_Query($args);

while ( $query->have_posts() ) {
        $query->the_post();
        $title = get_the_title();
        $value = get_field_object('telechargement_type_fichier');
        $field = $value['value']['label'];
        $field_posts[$field][$title] = $post;
   }

将一个 foreach 循环变成一个 foreach 循环,以对每个字段的每个帖子进行分类 value

foreach($field_posts as $field_post => $field_title) {

    echo '<p><strong>' . $field_post . '</strong></h3>';

    foreach($field_title as $post_listing => $listing) {
        echo '<p>' . $post_listing . '</p>';
    }

} wp_reset_postdata();

我得到:

  • 字段 value 1

    帖子 1

    帖子 2

  • 字段 value 2

    帖子 3

    帖子 4

ETC .........

相似文章

swiftui - DocumentGroup 有时会创建多个视图

在我的应用程序中,我正在创建一个对象并使用.onAppear向其添加数据。我有时注意到(4到6次中有1次),我的对象被创建了多次,并且没有为每次调用.onAppear。经过反复试验,我将代码简化为以下...

随机推荐

最新文章