onditions: Page have template, for example: /* Template name: News */
Explaining:
We have many pages, and one page with assigned template (/* Template name: News */).
I want on main page (index.php) retrieve page(News) url and title.
Answer
Let me try to summarize what you want and answer:
I want on main page (index.php) retrieve page(News) url and title.
So you have a “News” page that’s using a specific template called “News” and you want to grab that page’s ID, URL, and title to display on the front page, correct?
Get a Page by Template
There is no built-in way to grab a page based on the template it’s using. Instead, you have to search for all pages based on a hidden meta value that matches your page template. So, let’s say your News template is named news-template.php in the theme, then you’d use the following code to get the first page that use that template:
|
1 2 3 4 5 6 7 |
$news_pages = get_pages( array(
'meta_key' => '_wp_page_template',
'meta_value' => 'news-template.php',
'number' => 1
) );
$news_page = $news_pages[0]; |
Remember, since get_pages() returns an array, you have to manually select the first element of that array. Now this $news_page object contains the content of your News page.
Displaying Page Information
Now, inside your index.php page you can display this page’s information by referencing the $news_page object.
Page ID: $news_page->ID
Page URL: get_page_link( $news_page->ID )
Page Title: $news_page->post_title


