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:
$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