我正在使用高级自定义字段我有一个bookitall_roomstype
自定义帖子类型我有一个bookitall_bookings
作为另一个自定义帖子类型
在bookitall\\u bookings中,有一个字段称为bookitall_roomstype
存储为pagelink
(acf“类型”)。(这看起来像是实际房间类型的永久链接(它不是存储为标题/名称)我正在设置要显示的某些列(及其值)。现在我希望显示roomtype的名称。我在做下面的事。。。
This is a snippet of my code. This snippet retrieves the NAME roomtype_name
of the pagelink-type bookitall_roomstype
:
$allfields_currentpost = get_fields();
$args = array(
\'posts_per_page\' => -1,
\'offset\' => 0,
\'orderby\' => \'ID\',
\'order\' => \'ASC\',
\'post_type\' => \'bookitall_roomtypes\'
);
$roomtypes = get_posts( $args );
$pagelink = get_field(\'bookitall_roomstype\'); //pagelink acf type
$roomtypes_slugs = array();
foreach ( $roomtypes as $r ) {
$roomtypes_slugs[] = get_permalink( $r->ID);
}
$arrkey = (array_search($pagelink, $roomtypes_slugs));
$roomtype_name = \'\';
if ( $arrkey !== false ) {
$roomtype_name = $roomtypes[$arrkey]->post_title;
}
The above do actually work (如果有人有同样的问题,我会把它放在这里
want to know if there is a better/simpler way of achieving above? (从当前帖子中获取roomtype的名称)
我试着用url to postid( $pagelink )
和get_page_by_path( $pagelink )
但它们只返回0(这意味着不返回任何对象)。如果有邮件被退回,我可以使用$post->post_title
.
更新时间:New code (感谢@Milo!!!):
$allfields_currentpost = get_fields(false, false);
$roomtype_id = $allfields_currentpost[\'bookitall_roomstype\'];
$roomtype_name = get_the_title($roomtype_id);
(我也在使用当前帖子中的其他字段值,因此我使用
get_fields()
而不是
get_field()
)
SO网友:WebElaine
你不需要得到所有bookitall_roomstype
在代码的第2-9行中。您确实只想提取指定给当前bookitall_bookings
CPT。
就“pagelink”字段而言,这似乎是一种不安全的信息调用方式。如果有一天permalink发生了变化呢?似乎将post ID而不是永久链接保存为bookitall_roomtypes
领域
考虑到这一点,也为了让它更清楚bookitall_roomstype
CPT名称与不相同bookitall_roomtypes
自定义字段,我建议如下:
// pull an ACF field that has the post ID saved
$room_type_ids = get_field(\'bookitall_room_type_ids\');
// create an empty array to hold room type details
$room_types = array();
foreach($room_type_ids as $room) {
// save the permalink
$room_types[][0] = get_the_permalink($room);
// save the name
$room_types[][1] = get_the_title($room);
}
// now you can loop through the room types to display as you wish
// this just links the name to the permalink, but you can add whatever
// markup you need
foreach($room_types as $room_details) {
echo \'<a href="\' . $room_details[0] . \'">\' . $room_details[1] . \'</a>\';
}
这样,您只需提取所需的最低信息,而不是每个房间类型,然后是每个房间类型的详细信息,然后才检查当前帖子是否需要这些特定的详细信息。:)