繁体   English   中英

WordPress-获取带有类型文章的类别和帖子

[英]WordPress - Get Categories & Posts With Type Article

我想获取所有类别以及属于该类别的帖子,以获取所有类别,我正在使用以下代码

$cat_args = array(
    'taxonomy'      => 'article-category',
    'orderby'       => 'menu_order',
    'order'         => 'ASC',
    'hierarchical'  => true,
    'parent'        => 0,
    'hide_empty'    => true,
    'child_of'      => 0
);
$get_categories = get_categories( $cat_args );

为了获取所有带有类型文章的帖子,我正在使用此代码

$query = new WP_Query(array(
    'post_type' => 'article',
    'post_status' => 'publish',
    'posts_per_page' => -1,
));
while ($query->have_posts()) {
    $query->the_post();
    $post_id = get_the_ID();
}

这在单独的循环中为我提供了所有类别的列表和所有类型文章的列表,但是我想要的是此行中的内容

Category 1
    - Post 1 Title
    - Post 2 Title
    - Post 3 Title
Category 2
    - Post 4 Title
    - Post 5 Title
    - Post 6 Title
    - Post 7 Title
    ...
...

我基本上是试图获取所有类别以及属于该类别的所有类型的文章,我尝试了许多不同的方法,但是似乎没有解决的办法,怎么办?

谢谢。

请尝试下面的答案,因为您需要在循环中进一步应用按字代码以获取适当格式的数据。 您可以根据您的特定设计,通过移除和设置UL / LI

成功显示数据后,从矿井代码中获取标签。

$cat_args = array(
    'taxonomy'      => 'article-category',
    'orderby'       => 'menu_order',
    'order'         => 'ASC',
    'hierarchical'  => true,
    'parent'        => 0,
    'hide_empty'    => true,
    'child_of'      => 0
);
$get_categories = get_categories( $cat_args );
foreach($get_categories as $get_category){
    $ids[] =  $get_category->term_id;
}
$finalCatPostData = '';
foreach($ids as $id){
    $finalCatPostData .= '<h2>'.get_cat_name( $id ).'</h2>';
    $args = array(
    'category'         => $id,  
    'orderby'          => 'date',
    'post_type'        => 'article',
    'post_status'      => 'publish',
    'suppress_filters' => true,
    'posts_per_page' => -1,
    );
    $posts_array = get_posts( $args );
    foreach($posts_array as $post){
        $finalCatPostData .= '<p>'.$post->post_title.'</p>';
    }   
}
echo $finalCatPostData;

输出:

cat 1
post 1 of cat 1
post 2 of cat 1

cat 2
post 1 of cat 2
post 2 of cat 2

cat 3
post 1 of cat 3
post 2 of cat 3

解决方案不完全正确,但是您可以遵循以下逻辑

1)获取类别

  $cat_args = array(
        'taxonomy'      => 'article-category',
        'orderby'       => 'menu_order',
        'order'         => 'ASC',
        'hierarchical'  => true,
        'parent'        => 0,
        'hide_empty'    => true,
        'child_of'      => 0
    );
    $get_categories = get_categories( $cat_args );

2)遍历每个类别并获取帖子,然后将其添加到最终数组中

$mFinalArray = []; // init empty array

foreach($get_categories as $category){


$query = new WP_Query(array(
    'post_type' => 'article',
    'post_status' => 'publish',
    'posts_per_page' => -1,
    'category_name' => $category, // fetch all posts that are in current $category
));
while ($query->have_posts()) {
    $query->the_post();
    $mFinalArray[$category][] = get_post(get_the_ID()); // add post under current category
}

// reset loop here

}

输出将是这样的:

Array(

 [a_category_name_example1] => array(many_posts_here_of_this_category),
 [a_category_name_example2] => array(many_posts_here_of_this_category),
)

考虑稍微玩上面的代码,因为它可能不完全正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM