Exclude pages with certain template from wp_list_pages

Daniel, exclude parameter doesn’t accept array.

Use your code this way:

$exclude = [];
foreach(get_pages(['meta_key' => '_wp_page_template', 'meta_value' => 'page-templates/page-noindex.php']) as $page) {
    $exclude[] = $page->post_id;
}

$args = array(
    'exclude'      => implode(",", $exclude),
    'title_li'     => '',
    'sort_column'  => 'menu_order, post_title',
    'post_type'    => 'page',
    'post_status'  => 'publish'
); 
wp_list_pages($args);

I think you can refactor it better for your needs

Leave a Comment