Using WordPress ‘list_pages’ PHP filter

The list_pages WordPress PHP Filter allows you to modify the page title when creating an HTML drop-down list of pages.

Usage

add_filter('list_pages', 'your_custom_function', 10, 2);

function your_custom_function($title, $page) {
    // your custom code here
    return $title;
}

Parameters

  • $title (string) – The page title.
  • $page (WP_Post) – The page data object.

More information

See WordPress Developer Resources: list_pages

Examples

Append Page ID to Page Title

This example appends the Page ID to the page title in the drop-down list.

add_filter('list_pages', 'append_page_id_to_title', 10, 2);

function append_page_id_to_title($title, $page) {
    $title .= ' (' . $page->ID . ')';
    return $title;
}

Add Post Status to Page Title

This example adds the post status to the page title in the drop-down list.

add_filter('list_pages', 'add_post_status_to_title', 10, 2);

function add_post_status_to_title($title, $page) {
    $title .= ' [' . $page->post_status . ']';
    return $title;
}

Make Draft Page Titles Italic

This example makes the titles of draft pages italic in the drop-down list.

add_filter('list_pages', 'italicize_draft_titles', 10, 2);

function italicize_draft_titles($title, $page) {
    if ($page->post_status == 'draft') {
        $title = '<i>' . $title . '</i>';
    }
    return $title;
}

Remove “Private:” Prefix from Private Pages

This example removes the “Private:” prefix from private pages in the drop-down list.

add_filter('list_pages', 'remove_private_prefix', 10, 2);

function remove_private_prefix($title, $page) {
    $private_title_format = __('Private: %s');
    $title = str_replace(sprintf($private_title_format, ''), '', $title);
    return $title;
}

Add Custom Prefix to Page Titles Based on Template

This example adds a custom prefix to the page titles based on the page template in the drop-down list.

add_filter('list_pages', 'add_custom_prefix_based_on_template', 10, 2);
function add_custom_prefix_based_on_template($title, $page) {
    $template = get_page_template_slug($page->ID);
    if ($template == 'template-about.php') {
        $title = '[About] ' . $title;
    } elseif ($template == 'template-contact.php') {
        $title = '[Contact] ' . $title;
    }
    return $title;
}