web-dev-qa-db-fra.com

Comment organiser PHP Fichiers à autoriser pour plusieurs types de pages?

Je suis un nouveau venu dans le développement WordPress (le plus que j'ai jamais fait dans le domaine de la conception et du développement Web, c'est la création de sites HTML de base); Il s'agit donc d'une question extrêmement simple, mais j'essaie de créer un site de plusieurs pages.

Je veux 3 pages statiques, une page d'accueil, une page à propos et une page de portfolio et un blog qui est rempli à l'aide du backend WordPress. Au départ, j'allais simplement placer le blog dans un sous-domaine distinct (par exemple, blog.example.com). Toutefois, je souhaite créer une liste sur toutes les pages avec une liste des publications récentes. Je souhaite donc toutes les conserver sur le même domaine.

Cependant, je ne suis pas sûr de savoir comment relier les pages ensemble, si je mets index.php, about.php, portfolio.php et blog.php dans le dossier du thème; Le index.php s'affiche comme prévu. Cependant, si je crée les liens comme suit, cela ne fonctionne pas (tous les hrefs sont des chaînes vides):

<ul class="nav">
   <li><center><a id="nav_bar" href="<?php get_home_template() ?>">Home</a></center></li>
   <li><center><a id="nav_bar" href="<?php get_query_template('about') ?>">About</a></center></li>
   <li><center><a id="nav_bar" href="<?php get_query_template('portfolio') ?>">Portfolio</a></center></li>
   <li><center><a id="nav_bar" href="<?php get_query_template('blog') ?>">Blog</a></center></li>
</ul>

Et si je dirige les liens vers le dossier wp-content, en utilisant la syntaxe suivante:

<a id="nav_bar" href="<?php bloginfo('template_url') ?>/about.php">About</a>

Le lien est correctement rendu, il pointe sur les fichiers PHP du dossier wp-content, mais lors de la navigation sur cette page, il ne peut pas appeler les fonctions WordPress (c'est-à-dire que get_header() est introuvable).

Quel est le meilleur moyen de réaliser ce que je veux faire?

1
Thomas Russell

Vous devez apprendre comment fonctionne la hiérarchie de modèles WordPress.

Il est très important que quiconque souhaite apprendre WordPress ou approfondir son expérience actuelle avec WordPress connaisse et comprenne tous les différents aspects de la hiérarchie des modèles WordPress.

Si vous envisagez de consolider ou d’organiser le contenu sur votre site Web WordPress, il est essentiel de comprendre comment votre site Web WordPress traite les demandes de chacun des visiteurs qui arrivent et naviguent sur votre site Web WordPress.

Voici une liste de liens à lire de haut en bas:

  1. Développement de thèmes
  2. Hiérarchie des modèles
  3. Thèmes pour enfants
  4. Balises conditionnelles
  5. Intégration dans les modèles
  6. La boucle en action

Maintenant, pour mon 0,02 en ce qui concerne votre situation particulière ...

Créez vos rythmes statiques dans la zone d’administration de WordPress Backend (domain.com/wp-admin/). Donnez-leur un titre, modifiez le "slug" si vous le souhaitez pour changer l'URL de la page et insérez du contenu.

Lisez les liens affichés plus tôt dans ma réponse. Alors reviens ici.

Créez un fichier page.php et placez-le dans le répertoire ./wp-content/themes/<your-theme/. Ce sera votre modèle par défaut pour toutes les "pages statiques" de votre site Web.

Maintenant, si vous vouliez une fonctionnalité ou une disposition différente pour une page spécifique, vous avez plusieurs options.

Option n ° 1) Créez des fichiers individuels pour chaque page. Vous pouvez le faire en créant un fichier appelé page-<your-page-slug>.php ou page-<your-page-ID>.php.

Option n ° 2) Utilisez des balises conditionnelles pour chaque page différente, dans votre fichier page.php.

Exemple:

if(is_page('about')){// Page with slug of "about".

    // do stuff

} elseif(is_page(28)){// Page with ID of "28".

    // do stuff

} elseif(is_front_page()){// Home page of your website.

    // do stuff

} else{// Any other page.

    // do stuff

}

Maintenant, si vous allez être plus ou moins difficile à coder vos liens dans votre mise en page ... Pensez à utiliser site_url(); .

Exemple: <a href="<?php echo site_url('/about/'); ?>">About</a>

Vous pouvez le faire en utilisant les informations de page réelles.

$page = get_post(28);
if($page){
    echo '<a href="'.get_permalink($page->ID).'">'.$page->post_title.'</a>'.PHP_EOL;
}

Maintenant, si vous vouliez vraiment avoir envie ... Vous pouvez utiliser des variables globales . Globalling l'objet de publication en cours (a/k/une page en cours).

if(is_page('about')){// Page with slug of "about".

    global $post;

    echo '<h1><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></h1>'.PHP_EOL;

} 

Il convient également de noter que lors de la configuration de votre "section blog" de votre site, vous devez consulter les paramètres de lecture de la section d'administration de back-end WordPress. WP Admin -> Settings -> Reading

Définissez votre page d'accueil et une page pour les messages. La page pour les messages est l'endroit où votre blog sera situé. index.php est le fichier de modèle par défaut pour vos articles de blog. Vous pouvez configurer différents modèles pour chaque zone de votre blog. home.php serait votre fichier de modèle par défaut pour la "page principale du blog", category.php serait tous les articles de votre blog auxquels une catégorie avait été attribuée. tag.php serait tous les articles de votre blog auxquels une balise a été attribuée. etc...

Je ne peux pas aller trop en profondeur sur ce sujet, car il y a tout simplement trop d'informations à couvrir dans une seule réponse. Tout cela est expliqué dans les liens ci-dessus plus haut dans ma réponse. Je peux vous assurer que si vous lisez et comprenez ces liens, vous serez sur la bonne voie pour trouver une solution.

1
Michael Ecklund

Vous voyez, si vos fichiers ne sont que de simples fichiers php (sans aucun lien avec WordPress), les fonctions WordPress ne seront pas accessibles dans ces fichiers. Si vous souhaitez créer différentes pages de structure/disposition différentes, vous devez d'abord créer des modèles dans votre thème thème/enfant, ajouter de nouvelles pages à partir du tableau de bord de l'administrateur, puis leur attribuer le modèle que vous avez créé -

1) Créer un modèle - http://codex.wordpress.org/Page_Templates

2) Ajouter une nouvelle page à partir du tableau de bord de l'administrateur - http://codex.wordpress.org/Pages_Add_New_Screen

3) Lorsque vous ajoutez la page, sélectionnez le modèle parmi ceux que vous avez créés. Vous pourrez les identifier par leur nom.

Si vous avez ajouté get_header (), get_footer () dans vos fichiers PHP, cela signifie que vous avez essayé de ne créer que les modèles, mais il semble qu'ils ne soient pas chargés correctement en tant que modèles. Référez-vous au lien de création de modèle pour plus de détails. Remarque: n'oubliez pas de donner 'Nom du modèle' lors de la création d'un modèle. Vous pouvez même référencer n'importe quel modèle existant dans votre thème et simplement copier-coller, renommer le nom du fichier ainsi que le nom du modèle, personnaliser la mise en page à votre guise et l'attribuer à une page WordPress.

En outre, lorsque les pages sont prêtes, vous pouvez simplement ajouter un thème au menu de navigation à partir du tableau de bord lui-même http://codex.wordpress.org/WordPress_Menu_User_Guide

Si vous ne souhaitez pas créer de nouveau modèle et utiliser le thème existant, vous pouvez les utiliser immédiatement en leur attribuant des pages dans le tableau de bord de l'administrateur.

0
WisdmLabs