Stalo se to proto, že takto šablony ve WordPressu nefungují. Nevytváříte konkrétní soubor pro každou stránku na vašem webu. Vytvoříte stránky a pak jim přiřadíte šablony a necháte WordPress, aby zjistil, jak k těmto stránkám přistupovat a vytvářet k nim přístupy. Pokus o přímý přístup k jednomu z těchto souborů povede k 404, protože WordPress kvůli skutečnosti, že stránka (ve wp land) s tímto názvem neexistuje.
Skutečnost, že to udělalo fungovat, když jste zkusili přejít přímo do index.php
je to proto, že v hierarchii šablon
, index.php
je posledním souborem, který WP hledá při hledání šablony, ze které se má zobrazit vaše stránka. Protože tento soubor musíte mít v každém motivu, byl nalezen, a tudíž žádné 404.
Existuje něco, čemu se říká permalinks což vám umožňuje vytvářet přátelské adresy URL na vaše stránky beze změny názvů v souborech šablon. To by nebylo možné, pokud by vaše adresy URL byly přímo připojeny k názvům souborů.
WordPress Theme Handbook má docela úhledný článek na šablony stránek a kodex vám může dát nějaké rady, jak s nimi začít. Smashing Magazine má úžasný článek napsaný Nickem Schäferhoffem, který poskytuje podrobné pokyny, jak vytvořit šablonu stránky.
Stručně řečeno, šablona stránky převzatá z tématu WordPress Twentyfourteen funguje nějak takto
<?php
/**
* Template Name: Full Width Page
*
* @package WordPress
* @subpackage Twenty_Fourteen
* @since Twenty Fourteen 1.0
*/
get_header(); ?>
<div id="main-content" class="main-content">
<?php
if ( is_front_page() && twentyfourteen_has_featured_posts() ) {
// Include the featured content template.
get_template_part( 'featured-content' );
}
?>
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php
// Start the Loop.
while ( have_posts() ) : the_post();
// Include the page content template.
get_template_part( 'content', 'page' );
// If comments are open or we have at least one comment, load up the comment template.
if ( comments_open() || get_comments_number() ) {
comments_template();
}
endwhile;
?>
</div><!-- #content -->
</div><!-- #primary -->
</div><!-- #main-content -->
<?php
get_sidebar();
get_footer();
Zajímavá je část komentáře Template Name: Full Width Page
dělá tuto šablonu globální, což znamená, že k ní lze přistupovat kdekoli na vašem webu (další podrobnosti o hierarchii naleznete v dokumentaci). Jakmile budete mít něco takového ve své šabloně, vytvořte stránku a poté k ní přiřaďte svou šablonu. Měli byste být zlatí!
UPRAVIT:
Ještě včas, podívejte se na tuto úžasnou infografiku
který ukazuje, jak funguje šablonování ve WP landu a jak se každá stránka nakonec vykreslí do index.php
, pokud není nalezen žádný jiný soubor šablony.