Wordpress 在自定义 post 类型和 ACF 上结合 get_posts 和 category_name 函数

Wordpress combining get_posts and category_name functions on custom post type and ACF

我试图从自定义 Post 类型“dish”中获取一些 posts,价格为 ACF。我试图用价格显示菜肴的名称并想出了这个代码。我想知道这段代码中的循环部分是否被认为是好的做法?

<div id="main-content">
    <div class="container-lg overflow-hidden">
        <div class="row gx-5 d-flex flex-wrap">
            <?php 
            $categories = get_categories();
            foreach ($categories as $category){
                $categoryName = $category->name; // look into the object named $category and then look into the variable named "name"
                if ($categoryName != "Uncategorized"){
                    ?>
                        <div class="p-4 col-6">
                            <div>
                                <h3><?php echo $categoryName;?></h3>
                            </div>
                            <?php
                            $args = array(
                                'posts_per_page' => -1,
                                'post_type' => "dish",
                                'category_name' => $categoryName
                            );
                            $dishes = get_posts($args);
                            foreach ($dishes as $dish){
                                ?>
                                <div>
                                    <span><?php echo $dish->post_title; ?></span>
                                    <span class="float-end"><?php echo the_field('price', $dish); ?></span>
                                </div>
                                <?php
                            }
                            ?>
                        </div>
                    <?php
                }
            }
            ?>
        </div>
    </div>
</div>

我没有使用 have_posts() 循环,因为我认为每个类别都会调用所有 post。所以我现在不确定我使用的代码在存档页面上是否是一个好习惯。我看到的另一种方式是为每个类别自定义查询。但是我再次不确定循环内的自定义查询是否是个好主意,以防万一有数千个 post。请指教

简答:
是的,没关系。我每次都会使用相同的方法。尽可能避免编写自己的自定义 sql 查询。 get_postscategory_name 的组合工作得很好。


不确定这是不是打字错误,但我也会替换:

<span class="float-end"><?php echo the_field('price', $dish); ?></span>

<span class="float-end"><?php echo the_field('price', $dish->ID); ?></span>