I made a view templates for specific slugs

  • page1-220 use page.php
  • contact uses page-contact.php
  • service uses page-service.php

Now I want to list the pages with their templates on a "overview" page with page-overview.php template... .

I tried this:

<?php $args = array(
'post_type' => 'page', /* or just 'post' */
'posts_per_page' => -1,

$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
    echo '<p>'; 
    echo $i . '. ';
    echo ' - ';
    echo get_page_template(); 
    echo '</p>';
} ?>

get_page_template() allways returns the path to page-overview.php.

Wonder what I am missing here. I wonder if there is a way to get a list of ids, using the page.php template.

Many thanks in advance

  • 1
    get_page_template() returns the current page template. you need get_page_template_slug( $id ) to get the template of $id post. – idpokute Aug 14 '19 at 18:56

I believe you need to use get_template_part, but you need to request the get_page_template_slug first.

So that would look like:

get_template_part( get_page_template_slug( get_the_ID() ) );

in lieu of

echo get_page_template();

And no need to echo it, it returns the template already printed.

  • Many thanks @socki03. Unfortunately, this approach does not return any values for me. I suspect it's because in the template hierarchy I'm not following a $custom.php, but a page {slug} .php approach ??? – Friedrich Siever Aug 16 '19 at 16:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.