我正在开发一个自定义的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
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我得到的是这个:
三明治
番茄,
瑞士芝士,
法国布里,
法国布里,
...
汤类
番茄,£2.60
瑞士奶酪,2.60英镑
法国布里,£2.60
法国布里,£2.60
任何帮助,将不胜感激!
UPDATE
这似乎有所帮助:
<?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 } ?>
Run Code Online (Sandbox Code Playgroud)
它给了我正在寻找的结果.通过实验和快乐事故偶然发现了这个问题,所以我知道这可能不是最佳做法 - 欢迎提出建议或改进建议!
小智 6
像这样的东西可能会更好,因为它不会循环遍历每个类别的所有帖子:
<?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 } ?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5558 次 |
| 最近记录: |