按自定义字段中的值对 posts 进行分组 - 按值对 posts 编号进行排序,但 post 标题相同
Group posts by values from a custom field - Right posts number by values but same post title
我想分组 WP post(来自 'dlm_download' post 按 acf 字段 'telechargement_type_fichier'.
中的值键入
Value 1 : Post 1 Post 2 Post 3
Value 2 : Post 4 Post 5 Post 6
Value 3 : Post 7 Post 8 Post 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();
}
然而,这是我得到的结果:
值 1 - programme_scolaire
Post 1 - Title
Post 1 - Title
Post 1 - Title
值 2 - 模块
Post 1 - Title
值 3 - 传单
Post 1 - Title
Post 1 - Title
值 4 - jeu
Post 1 - Title
Post 1 - Title
Post 1 - Title
Post 1 - Title
我通过现有值字段获得真实的 posts 数字,但在循环中与 post/title 相同。
可能是postid错误或者“reset_postdata()”...不明白为什么。
你能帮帮我吗?
谢谢!
我对 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);
}
我找到了解决方案。
制作数组:
$field_posts = array();
使用 post 进行查询您希望按字段值过滤并调用 ACF 字段和您希望显示的值。
$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 循环以对每个 post 每个字段值进行分类
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();
我得到:
字段值 1
Post 1
Post2
字段值 2
Post 3
Post 4
等等.........
我想分组 WP post(来自 'dlm_download' post 按 acf 字段 'telechargement_type_fichier'.
中的值键入Value 1 : Post 1 Post 2 Post 3
Value 2 : Post 4 Post 5 Post 6
Value 3 : Post 7 Post 8 Post 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();
}
然而,这是我得到的结果:
值 1 - programme_scolaire
Post 1 - Title
Post 1 - Title
Post 1 - Title
值 2 - 模块
Post 1 - Title
值 3 - 传单
Post 1 - Title
Post 1 - Title
值 4 - jeu
Post 1 - Title
Post 1 - Title
Post 1 - Title
Post 1 - Title
我通过现有值字段获得真实的 posts 数字,但在循环中与 post/title 相同。 可能是postid错误或者“reset_postdata()”...不明白为什么。
你能帮帮我吗?
谢谢!
我对 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);
}
我找到了解决方案。
制作数组:
$field_posts = array();
使用 post 进行查询您希望按字段值过滤并调用 ACF 字段和您希望显示的值。
$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 循环以对每个 post 每个字段值进行分类
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();
我得到:
字段值 1
Post 1
Post2字段值 2
Post 3
Post 4
等等.........