在 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 /高级自定义字段和分类法以及拆分表达式