我有一个Wordpress数据库,分为三类:
ID 3:欧洲
ID 4:法国(3岁的孩子)
ID 5:巴黎(4岁的孩子)
我现在需要显示其各自类别下的所有帖子,如下所示:
欧洲1号岗位2号岗位3号岗位
法国,1号岗位,3号岗位
巴黎邮政3
第1篇是在法国发表的,第2篇是在欧洲发表的,第3篇是在巴黎发表的,你能确认我这样做是对的吗?
<?php
$args = array(\'cat\' => 3);
$category_posts = new WP_Query($args);
?>
<!-- Show EUROPE block, so just loop, no check -->
<?php
while($category_posts->have_posts()) : $category_posts->the_post();
the_title("<br />");
endwhile;
?>
<!-- Show FRANCE block, check category name -->
<?php
while($category_posts->have_posts()) : $category_posts->the_post();
if (strpos(get_the_category()[0]->cat_name,\'France\') !== false)
the_title("<br />");
endwhile;
?>
<!-- Show PARIS block, check category name -->
<?php
while($category_posts->have_posts()) : $category_posts->the_post();
if (strpos(get_the_category()[0]->cat_name,\'Paris\') !== false)
the_title("<br />");
endwhile;
?>
上述代码中省略了HTML格式用蹩脚的话来说,我只调用了一次WP\\u查询,然后我循环,检查法国和巴黎块的类别名称“France”和“Paris”。有更好的方法吗?如果我调用WP\\u Query三次,是否会导致性能问题?
非常感谢。
SO网友:Pieter Goosen
您可以使用get_categories
. 您拥有三个类别的ID,即使它们是父类别和子类别。您可以通过这些IDinclude
参数仅获取这三个类别,按ID排序并使用foreach
循环使用WP_Query
获取各自类别下的职位
请记住,当您将类别ID添加到include
参数以按升序添加它们。这是查询,根据需要进行修改
<?php
$categories = get_categories(\'include=3,4,5&orderby=ID\'); //retrieve all the categories and save them as a variable $categories
foreach($categories as $category) : // Use foreach to split $categories into individual categories and store as variable $category
?>
<p><?php // Display the category name as a link to the actual category ?>
Category: <?php echo $category->name ?>
</p>
<?php
$catid = $category->cat_ID; //Store the category ID as a variable to be used in WP_Query
$args = array(
\'cat\' => $catid,
);
$query = new WP_Query($args);
// Start the Loop. You can use your own loop here
while ( $query->have_posts() ) : $query->the_post();
?>
<p>
<?php the_title(); //Display only the title of the posts in the category ?>
</p>
<?php
endwhile;
endforeach;
?>