[英]How can I display a list of categories and all their posts in WordPress?
我正在研究自定义WordPress主题。
我正在尝试显示自定义帖子类型的类别列表(作为标题),并且在每个类别标题下方,我想列出帖子标题和单个自定义字段。 我正在使用Types插件。 我知道一点点php并且有一些WordPress的经验,但是还不足以正确地解决这个问题。
例:
自定义帖子类型: 菜单项
此帖子类型的自定义字段: 商品价格
类别: 三明治馅料
类别: 汤
所需结果:
三明治馅料
奶酪-£#。##
火腿-£#。##
金枪鱼-£#。##
...
汤类
番茄
鸡
蔬菜
想法是要动态添加新类别(例如,有一天他们可能会开始销售熔胶),WP会在添加新类别时迭代这些类别,从而不必在新类别中进行硬编码在添加它们的页面上。
这是我到目前为止的内容:
<?php
$args = array(
'post_type' => 'menu-item',
'orderby' => 'name',
'parent' => 0
);
$categories = get_categories( $args );
foreach ( $categories as $category ) {
$posts = get_posts($args);
$item_price = types_render_field( "item-price" );
echo '<h2>' . $category->name . '</h2>';
?>
<ul><?php
foreach($posts as $post) {
?>
<li><?php the_title(); ?>, <?php echo $item_price; ?></li>
<?php
}
}
?>
我得到的是:
三文治
番茄,
瑞士芝士,
法国布里
法国布里
...
汤类
番茄£2.60
瑞士奶酪,2.60英镑
法国干酪,2.60英镑
法国干酪,2.60英镑
任何帮助,将不胜感激!
更新
这似乎有所帮助:
<?php
$args = array(
'post_type' => 'menu-item'
);
$categories = get_categories( $args );
$posts = get_posts($args);
foreach ( $categories as $category ) {
echo '<h2>' . $category->name . '</h2>';
?>
<div class="menu-items-container">
<?php foreach($posts as $post) { ?>
<?php $item_price = types_render_field( "item-price" ); ?>
<?php if (in_category($category)) { ?>
<p><?php the_title(); ?>, <?php echo $item_price; ?></p>
<?php } ?>
<?php } ?>
</div>
<?php } ?>
这给了我一直在寻找的结果。 通过实验和意外事故偶然发现了此修复程序,因此我知道这可能不是最佳实践-欢迎提出改进的建议!
这样的事情可能会更好,因为它不会遍历每个类别的所有帖子:
<?php
$args = array(
'post_type' => 'menu-item'
);
$categories = get_categories( $args );
foreach ( $categories as $category ) {
echo '<h2>' . $category->name . '</h2>';
$args['category'] = $category->term_id;
$posts = get_posts($args); ?>
<div class="menu-items-container">
<?php foreach($posts as $post) { ?>
<?php $item_price = types_render_field( "item-price" ); ?>
<p><?php the_title(); ?>, <?php echo $item_price; ?></p>
<?php } ?>
</div>
<?php } ?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.