在 Wordpress 中使用 ACF(高级自定义字段)显示自定义帖子标题的下拉菜单

Posted

技术标签:

【中文标题】在 Wordpress 中使用 ACF(高级自定义字段)显示自定义帖子标题的下拉菜单【英文标题】:Displaying a dropdown menu of custom post titles with ACF (Advanced Custom Fields) in Wordpress 【发布时间】:2021-05-17 05:08:19 【问题描述】:

我想在Advanced Custom Fields 的帮助下显示自定义帖子标题列表。

首先,我创建了一个自定义帖子类型。

function create_posttype() 
     register_post_type(
         'room',
         array(
             'labels' => array(
                 'name' => __('Conference rooms'),
                 'singular_name' => __('Conference room')
             ),
             'menu_icon' => 'dashicons-building',
             'menu_position' => 5,
             'public' => true,
             'has_archive' => false,
             'publicly_queryable' => false,
             'show_ui' => true,
             'show_in_menu' => true,
             'query_var' => true,
             'rewrite' => false,
             'capability_type' => 'post',
             'supports' => array('title')
         )
     );

然后我在这个自定义帖子类型中创建了一些“帖子”,即。 01室、02室等 接下来,我为每个房间创建了一个新的自定义字段,并使用 ACF 将位置规则设置为指向相应的房间。

每个房间的字段包括:

    字段标签:房间名称,

    字段名称:房间名称,

    字段类型:文本,

    默认值:房间 01(每个房间都有不同的值,即房间 02,房间 03,...)

    字段标签:每晚价格,

    字段名称:price_per_night,

    字段类型:数字,

    默认值:5

    字段标签:帖子对象,

    字段名称:post_object,

    字段类型:帖子对象,

    返回格式:帖子对象

在此之后,我返回到自定义帖子类型(房间)并编辑每个房间(房间 01 等),因此 Post 对象指向适当的页面(在本例中为名为 Reservation 的页面及其自定义模板)。

完成后,我打开了自定义模板 php 文件(Reservation 正在使用该文件)并添加了这段从ACF documentation 复制的代码。

<?php
$featured_post = get_field('featured_post');
if( $featured_post ): ?>
    <h3><?php echo esc_html( $featured_post->post_title ); ?></h3>
<?php endif; ?>

不知道我必须在get_field 部分中调用什么,我在我的 WP 中搜索了一个房间,它指向了?room=room-01。查找 get_field() 我假设我必须指向要显示的字段(参数 1)和字段所在的位置(参数 2)。

现在,无论我尝试什么,我都无法显示标题下拉菜单...

我尝试过的一些事情:

$featured_post = get_field('room', 'room=room-01');
$featured_post = get_field('room_name', 'room=room-01');
$featured_post = get_field('room_name', 'room');

如果我省略 if 语句,我会收到此警告/通知:

注意:试图获取非对象的属性“post_title”

总之,我似乎无法让它工作。任何帮助、指示、建议和解释都将受到欢迎。

如果我可以提供任何其他信息,请随时询问。

【问题讨论】:

【参考方案1】:

经过大量搜索,我发现了一些相关问题,经过一些工作,我想出了这个......

这不是我想要的,但它确实有效......


                    <form>
                        <label for ="room">Select a room:</label>
                        <select name="room" id="room">
                    <?php
                    $args = array(
                        'post_type' => 'room',
                        'posts_per_page' => -1,
                        'orderby' => 'title',
                        'order' => 'ASC'
                    );
                    $the_query = new WP_Query($args);
                    $sobe = get_posts($args);
                    foreach ($sobe as $post)
                        setup_postdata($post);
                        $room_title = get_field('room_name');
                        
                        ?>
                        <option value=" <?php echo $room_title ?> " > <?php echo $room_title ?> </option>
                        
                        <?php
                        
                        
                    
                    wp_reset_postdata();
                            
                    ?>
                    </select>
                    </br>
                    </br>
                    </form>

【讨论】:

以上是关于在 Wordpress 中使用 ACF(高级自定义字段)显示自定义帖子标题的下拉菜单的主要内容,如果未能解决你的问题,请参考以下文章

ACF 中继器子字段 Shuffle(wordpress 高级自定义字段)

以编程方式更新转发器字段中特定组字段的值 - 高级自定义字段 (ACF) - Wordpress

在 Wordpress 自定义帖子类型循环中使用 ACF 分类字段作为变量

如何检查 Wordpress 高级自定义字段插件中的字段组?

php PHP - Wordpress - 搜索 - wordpress自定义搜索功能,包含ACF /高级自定义字段和分类法以及拆分表达式

php PHP - Wordpress - 搜索 - wordpress自定义搜索功能,包含ACF /高级自定义字段和分类法以及拆分表达式