Skip Navigation

[Resolved] Populate a Dropdown List of Published Pages

This thread is resolved. Here is a description of the problem and solution.

Problem:

I was wondering how I would go about populating a dropdown list (Select Custom Field) with a list of published pages. I've had success in the past creating a dropdown list of custom post types, but when I try to use the 'post_type' => 'page' it doesn't seem to be working.

Solution:

To get WordPress built-in pages, please try WordPress function get_pages().

Relevant Documentation:

https://developer.wordpress.org/reference/functions/get_pages/

This support ticket is created 4 years, 10 months ago. There's a good chance that you are reading advice that it now obsolete.

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

Sun Mon Tue Wed Thu Fri Sat
- 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 -
- 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 -

Supporter timezone: Asia/Hong_Kong (GMT+08:00)

This topic contains 2 replies, has 2 voices.

Last updated by calgaryA 4 years, 9 months ago.

Assisted by: Luo Yang.

Author
Posts
#1527481

I was wondering how I would go about populating a dropdown list (Select Custom Field) with a list of published pages. I've had success in the past creating a dropdown list of custom post types, but when I try to use the 'post_type' => 'page' it doesn't seem to be working. Not sure if I'm doing something wrong.

add_filter('wpt_field_options', 'parent_page', 10, 3);

function parent_page_list($options, $title, $type)
{
switch ($title) {
case 'Parent Page':
$options = array();
$args = array(
'post_type' => 'page',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
);
$parent_page_array = get_posts($args);
foreach ($parent_page_array as $parent_page) {
$options[] =
array(
'#value' => $parent_page->post_name,
'#title' => $parent_page->post_title,
);
}
array_unshift($options, array(
'#value' => '',
'#title' => 'Select a Parent Page',
));
break;
}
return $options;
}

#1528099

Hello,

To get WordPress built-in pages, please try WordPress function get_pages(), see document:
https://developer.wordpress.org/reference/functions/get_pages/

#1535983

My issue is resolved now. Thank you!