web-dev-qa-db-fra.com

Comment créer une page avec une URL spécifique?

J'aimerais avoir quelques pages accessibles à toute personne connaissant l'URL, mais ne figurant pas dans le menu WordPress. Je voudrais que ces pages aient un nom plutôt qu'un numéro, mais je ne vois pas comment faire aucune de ces choses.

Autrement dit, je peux créer une page nommée "Spécial" et ne pas l'inclure dans le menu, mais je ne peux pas accéder à

mysite.net/Special

seulement pour

mysite.net/?page_id=561

Je souhaite également conserver la navigation /? Page_id = 561, car il s'agit d'un site bien établi avec de nombreux liens configurés pour utiliser ce style d'URL. Je veux juste que quelques pages spécifiques aient des noms sympas qui vont résoudre.

WordPress a-t-il une telle fonctionnalité? Devrais-je essayer de faire en sorte que IIS soit dirigé vers/Spécial vers /? Page_id = 561?

Hmm. En choisissant les tags pour cette question, j'ai trouvé "url-rewriting" et http://codex.wordpress.org/Rewrite_API/add_rewrite_rule - il semblerait que je puisse en ajouter

function custom_rewrite_basic() {
  add_rewrite_rule('mysite.net/Special', 'mysite.net/Special');
}
add_action('init', 'custom_rewrite_basic');

Pour "functions.php" - celui que je vois se trouve dans mon dossier de thèmes (vingt-douze) ... alors, est-ce que je pourrais simplement l'insérer ici?

1
Dronz

Si vous avez essayé de créer un fichier statique, puis de le charger comme un fichier normal, vous avez peut-être eu des problèmes, car une page WP, comme nous l'appelons, n'est en réalité pas un fichier, mais plutôt un grand nombre de fichiers. cela indique à Wordpress comment assembler les informations demandées à partir de la base de données en fonction de la requête utilisée dans l'URL. La plupart des installations modernes de WP utilisent de jolis liens qui ne permettent pas aux utilisateurs de voir la requête "? Page_id = 561" car cela facilite la lecture des URL et leur sémantique. (Avant de faire ce que je énumère ci-dessous, je suis à peu près sûr que si vous passez aux permaliens, vos anciens liens de requête doivent toujours fonctionner, car ils permettent de transformer de jolis liens en requêtes en coulisses.)

Si vous êtes absolument convaincu que vous ne voulez pas passer aux jolis liens, vous pouvez charger Wordpress vous-même via un fichier statique. Pour ce faire, nous devons d’abord avoir besoin du fichier wp-blog-header.php qui se trouve dans le répertoire racine WP. Donc, pour tester cela, vous pouvez enregistrer un fichier dans le répertoire racine, nommez-le secret-page.php et placez-le dans les lignes suivantes. Une fois que vous devriez pouvoir y accéder à l'adresse mysite.com/secret-page.php (à condition que mysite.com soit votre répertoire d'installation wordpress. Il peut éventuellement s'agir d'un répertoire différent du dossier racine de votre site Web. Recherchez le dossier avec wp. -config.php à l'intérieur.

<?php
require( 'wp-blog-header.php' );
define('WP_USE_THEMES', true);

get_header();
wp_head();
?>
    <div id="main">

Normalement, je ne mettrais pas de fichier dans le répertoire racine, mais vous ne voudriez pas non plus mettre ce fichier dans votre dossier de thème et que l'URL soit www.monsite.com/wp-content/themes/secret_page.php (sauf si vous Vous souhaitez créer une règle de réécriture redirigeant l'URL yoursite.com/secret-page.php vers yoursite.com/wp-content/themes//secret-page.php). Si vous faites cela, il suffit de changer la ligne require ci-dessus pour require ('../../../ wp-blog-header'); si vous utilisez un dossier de thème typique. Pour chaque dossier situé au-dessus du dossier racine dans lequel vous placez le fichier, vous devez placer un ensemble de "../" avant le nom du fichier, ce qui signifie simplement "revenir en arrière d'un dossier".

Pour expliquer ce que le fichier ci-dessus a fait, il a exécuté le fichier wp-blog-header.php qui a lancé Wordpress pour vous, puis la deuxième ligne a indiqué à Wordpress que nous voulions utiliser des thèmes. De cette façon, nous pouvons obtenir le même aspect que votre site, que ce fichier se trouve ou non dans le dossier du thème, nous aurons accès à votre thème régulièrement utilisé, car WP l'a enregistré en tant qu'option dans la base de données.

Ensuite, le get_header (); line est allé à votre thème et a commencé à imprimer votre page de sites Web, et après cela, wp_head () exécute toutes les actions de la tête Wordpress. Si vous êtes développeur, vous pouvez continuer à partir d’ici seul. Sinon, vous pouvez gérer le vôtre, puis allez dans votre dossier de thème et copiez le code à partir de index.php ou page.php (quelle que soit la page à imiter). Consultez cette page du codex, http://codex.wordpress.org/Template_Tags - elle expliquera le fonctionnement des balises de modèle, ce qui vous aidera à ajouter les mêmes fonctionnalités que les pages de vos sites à cette nouvelle page, qui n'est pas répertorié et n'est disponible que pour les personnes connaissant l'URL. Vous n'êtes pas obligé d'utiliser le '' - c'est en fait juste pour démontrer que c'est là que vous devriez commencer votre HTML. J'espère que cela a aidé.

1
OnethingSimple

Tout ce dont vous avez besoin est d'activer les permaliens.

Je recommande fortement de passer aux permaliens:/% postname% /

Les anciens liens continueront à fonctionner. (En fait, chaque type de lien permanent est simplement un alias du nom par défaut:? P =% post_id%).

Pouvoir donner aux gens plus facilement des liens vers des pages est une raison secondaire. Le principal devrait être d'améliorer le classement des pages dans les moteurs de recherche.

Google place les pages contenant le mot clé recherché dans l'URL plus élevé. C'est un fait.

Pour ne pas afficher la page dans les menus, désactivez simplement la case à cocher "Ajouter de nouvelles pages à ce menu" dans Tableau de bord> Apparence> Menus. Et ajoutez/supprimez toutes les pages/publications dans/du menu pendant que vous y êtes.

2
Andrei Gheorghiu