I would like to display a list of custom post titles with the help of Advanced Custom Fields.
First off, I have created a custom post type.
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')
)
);
}
Then I have created a few "posts" inside this custom post type ie. Room 01, Room 02, etc. Next, I have created a new Custom Field for each room and set the Location Rule to point to the appropriate room, using ACF.
The fields for each room include:
Field Label: Room name,
Field Name: room_name,
Field Type: Text,
Default Value: Room 01 (each room has a different value ie. Room 02, Room 03,...)
Field Label: Price per night,
Field Name: price_per_night,
Field Type: Number,
Default Value: 5
Field Label: Post object,
Field Name: post_object,
Field Type: Post Object,
Return Format: Post Object
After this, I returned to the custom post type (room) and edited every room (Room 01, etc), so the Post object points to the appropriate page (in this case a page named Reservation with its custom template).
That being done, I opened up the custom template PHP file (which Reservation is using) and added this code, which I copied from the ACF documentation.
<?php
$featured_post = get_field('featured_post');
if( $featured_post ): ?>
<h3><?php echo esc_html( $featured_post->post_title ); ?></h3>
<?php endif; ?>
Not knowing what I have to call in the get_field section I searched for a room in my WP, which pointed me to ?room=room-01. Looking up get_field() I assume I have to point to the field in which I want to be displayed (argument 1) and the location where the field is located (argument 2).
Now, no matter what I try, I can't get the title drop-down menu to appear...
A few things I have tried:
$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 I omit the if statement I get this warning/notice:
Notice: Trying to get property 'post_title' of non-object
To conclude, I can't seem to get it to work. Any help, pointers, advice, and explanations would be most welcome.
If I can provide any additional information, feel free to ask.