PHP高级自定义字段:仅当分配给页面时才显示项目

PHP高级自定义字段:仅当分配给页面时才显示项目,php,wordpress,advanced-custom-fields,Php,Wordpress,Advanced Custom Fields,请容忍我。编程新手 我正在尝试使用ACF和repeater插件创建餐厅菜单 下面的屏幕截图显示了我正在努力实现的目标。这是已将数据添加到数据库的后端 这是我获取所需字段的基本循环 <?php while( have_rows('menus') ): the_row(); ?> <?php $item_name = get_sub_field('item_name'); $item_pric

请容忍我。编程新手

我正在尝试使用ACF和repeater插件创建餐厅菜单

下面的屏幕截图显示了我正在努力实现的目标。这是已将数据添加到数据库的后端

这是我获取所需字段的基本循环

<?php while( have_rows('menus') ): the_row(); ?>

            <?php
                $item_name = get_sub_field('item_name');
                $item_price = get_sub_field('item_price');
                $item_description = get_sub_field('item_description');
                $special = get_sub_field('special');
            ?>

            <h1 class="<?php echo $special"?>>
                 <?php echo $item_name ?>...<?php echo $item_price ?>
            </h1>

            <h2><?php echo $item_description ?></h2>

<?php endwhile; // end of the loop. ?>
我有三个模板,每个模板都显示相同的菜单,但在某些页面中,如果类设置为CSS样式,则会显示“特殊”项

e、 g

King's Cross Page列出了菜肴1和菜肴2的特殊性

但是

Covent Garden页面列出了第1道菜,跳过了第2道菜,因为它被选为国王十字架的特别菜

如何跳过未分配给特定模板的字段


谢谢。

是的,仍然不确定我是否完全理解这一点,但如果我理解正确,您需要检查页面是否与特殊字段相等吗

比如:

<?php while( have_rows('menus') ) : the_row();
    $item_name = get_sub_field('item_name');
    $item_price = get_sub_field('item_price');
    $item_description = get_sub_field('item_description');
    $special = get_sub_field('special');
    ?>
    <?php if( $special == get_the_title() ) :
        ?>
        <h1 class="<?php echo $special; ?>">
             <?php echo $item_name ?>...<?php echo $item_price ?>
        </h1>
        <h2><?php echo $item_description ?></h2>
        <?php
    endif;
endwhile; // end of the loop. ?>

你在网上有这样的例子吗?我很难理解你的意思,我不抱歉。目前所有这些都在本地运行。让我再解释一遍。我有三页。国王十字街,考文特花园,肖尔迪奇。每个页面都列出了使用ACF插件创建的相同菜单。当用户添加菜单项时,他可以将某些菜单项分配给页面,例如Kings Cross。因此,如果在访问Kings交叉页时将菜单项设置为Shoreditch,则不会显示Shoreditch菜单项。我假设您从数据库中删除它。或者某种形式的Arrayn我不太明白?数据是在后端设置的。上面的字段是后端。我只需要知道如何创建一个循环来显示菜单项,并跳过某些未分配给所查看页面的菜单项。因此,您的代码和上面的循环应该可以一起工作?因此,如果用户在后端创建了Dish1、Dish2、Shoreditch Special、Dish3、Dish4、Kings Special。如果模板中的“特殊”设置为“显示Shoreditch”,则“特殊”将隐藏,但菜单项仍按该顺序显示。希望这是有意义的。这段代码也包含了你的循环,我刚刚添加了一个if语句,表示如果特殊字段等于页面名称,则显示该菜肴。如果不是,则仍将显示非特殊菜肴?