J'essaie de créer un thème WordPress personnalisé à partir de zéro. Comme vous pouvez le constater, la structure de mon fichier est la suivante: footer.php, header.php, index.php, about.php et contact.php dans le dossier de mon thème:
J'ai terminé la page d'accueil (index.php) et j'essaie maintenant de créer ces autres pages et de créer un lien vers celles-ci. Mais quand je vais à ces pages depuis la page d'accueil , le seul moyen de les amener à se lier était par le biais de cette structure de liens longue et laide:
Je me demande si j'ai mal agi. Si je crée les nouvelles pages dans WordPress au lieu de manuellement via FTP, cela me permettra-t-il de changer la structure de lien permanent afin que je puisse avoir new.gatewaywebdesign.com/contact.php
au lieu de new.gatewaywebdesign.com/wp-content/themes/gatewaywebdesign/contact.php
?
J'ai décidé de créer une page contact
dans le tableau de bord WordPress, mais cela ne me permet pas de me débarrasser de index.php
après le nom du site:
Avez-vous d'autres suggestions pour modifier/ajuster la structure de lien? Merci
La réponse à cette question est oui, la création de pages dans WordPress vous permet de modifier la structure du lien. Ce que j’avais besoin de faire, c’est de retravailler index.php
de sorte qu’il utilise la boucle WordPress , puis affiche la page de couverture sous la forme choisie, quelle que soit la définition choisie. Tableau de bord WordPress. Donc, mon index.php
a fini par ressembler à ceci:
<?php get_header();?>
<?php if ( have_posts() ) : ?>
// Set front page
<?php if ( is_home() && ! is_front_page() ) : ?>
// Display page title
<header>
<h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
</header>
<?php endif; ?>
<?php
// Start the loop.
while ( have_posts() ) : the_post();
/*
* Include the Post-Format-specific template for the content.
* If you want to override this in a child theme, then include a file
* called content-___.php (where ___ is the Post Format name) and that will be used instead.
*/
get_template_part( 'content', get_post_format() );
// End the loop.
endwhile;
// Previous/next page navigation.
/* the_posts_pagination( array(
'prev_text' => __( 'Previous page', 'twentyfifteen' ),
'next_text' => __( 'Next page', 'twentyfifteen' ),
'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyfifteen' ) . ' </span>',
) );*/
// If no content, include the "No posts found" template.
else :
get_template_part( 'content', 'none' );
endif;
?>
<?php get_footer();?>
Assurez-vous que votre thème contient tous les fichiers de base nécessaires: single.php
, content-link.php
, content-none.php
, content-page.php
, content-search.php
, content.php
et page.php
.
Ensuite, dans WordPress, créez un menu et définissez les pages que vous avez créées dans WordPress dans ce menu.
Dans header.php
, définissez les liens vers les différentes pages du menu de navigation de la manière suivante:
<div class="menu-container"><!--menu items-->
<?php $main_menu = inits_get_main_menu();
foreach ($main_menu as $menu) { //var_dump( $menu); exit; ?>
<div class="menu-item contact">
<a class="menu-link" href="<?php echo $menu->url; ?>">
<?php echo $menu->title; ?>
</a>
</div>
<?php } ?>
</div>
Votre menu est maintenant défini dans l'en-tête, et lorsque vous cliquez sur l'un des liens vers vos autres pages, la structure de lien a l'apparence que vous souhaitez.
Comme @Milo l'a mentionné dans sa réponse, vous ne pouvez pas et ne devriez pas appeler directement un fichier de modèle. C'est un risque pour la sécurité, et vous ne pourrez plus accéder au moteur de WordPress, vous ne pouvez donc pas utiliser de fonctions telles que the_permalink
.
Pour inclure un modèle dans votre home.php
ou à l’endroit où vous le souhaitez, vous pouvez utiliser get_template_part()
:
get_template_part( 'relative/path/to/template' );
Ne pas inclure .php
. Il sera ajouté automatiquement. Ainsi, si votre about.php
est à l'intérieur de /theme/my-theme/folder/
et que votre home.php
est dans /theme/my-theme/
, vous devez utiliser cette fonction de la manière suivante:
get_template_part( 'folder/about' );
Cela inclura about.php
partout où vous utilisez le code. Vous avez maintenant un accès complet à WordPress dans votre about.php
et vous n'avez besoin d'aucune URL laide.
Pour ajouter une page, créez un fichier php vierge nommé page-whatever.php
. Ajoutez ensuite ce qui suit à son en-tête:
<?php
/**
* This is the template for Pages
*
* @package YourPackage
*/
get_header();
get_template_part('path/to/portfolio');
À présent, vous pouvez voir votre nouveau modèle de page à l’arrière, tout en ajoutant une page (dans le menu déroulant Modèle de page).
Les fichiers Theme PHP ne sont jamais liés ni chargés directement. Vous créez des pages via l'interface d'administration, dont le contenu réside dans la base de données, et WordPress mappe les demandes entrantes vers le fichier de thème approprié en fonction du type de demande, archive, publication individuelle, page unique, etc. Hiérarchie des modèles pour plus d’informations sur les fichiers de thème à utiliser pour chaque type de demande.
La question de index.php
figurant dans les permaliens est distincte. Vous avez généralement besoin d’un serveur sur lequel mod_rewrite
est activé pour des liens permanents "Pretty" complets. À l'heure actuelle, vous avez ce qu'on appelle PATHINFO, ou "presque jolie" permaliens. Parcourez la page Utilisation de permaliens pour plus d’informations sur les exigences de chacun.
Si vous voulez avoir un modèle différent sur //site.com/contact/
, vous devez créer une page, lui attribuer ce lien permanent et créer un fichier modèle appelé page-contact.php
.
Voici comment WP fonctionne:
Rechercher un modèle spécifique (tel que notre page-contact.php
)
Rechercher un modèle générique (par exemple page.php
, single.php
et ainsi de suite)
Utilisez index.php
Donc, s'il ne peut pas trouver le 1er, il passe au 2e et tombe ensuite à index.php
. Il suffit de regarder comment WP hiérarchie de modèles construite