繁体   English   中英

如何在WordPress中显示类别列表及其所有帖子?

[英]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.

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