Je voudrais avoir une page séparée pour les commentaires sur un post, telle que cette page: /2011/02/post-name/
montre simplement le post et ensuite vous cliquez sur un lien pour voir les commentaires, vous amenant à une page comme celle-ci:/2011/02/post-name/comment-page-1/
Je vérifierai ensuite l'URL pour voir si "comment-page-x" est dedans, et afficherai la page différemment si c'est le cas (supprimez le message, afin que les gens n'aient pas à faire défiler chaque fois, et aussi styliser les choses a un peu différemment).
Cela fonctionnerait, mais WordPress redirige comment-page-1
vers la page de publication - j'en ai besoin pour comment-page-1
y rester dans l'URL.
Est-ce possible? Comment puis-je le faire? Merci!
Réponses:
Grande question! WordPress attribue votre numéro de page de commentaire à la var de requête
'cpage'
qui est définie lorsque votre URL a/comment-page-1/
à la fin. Votre coupable est donc dans laredirect_canonical()
fonction, ligne 192 de/wp-includes/canoncial.php
.Puisque la
redirect_canonical()
fonction est définie comme une action, ce que nous pouvons faire est d'insérer notre propre fonction à appeler à la place, demandez à notre fonction de définir la'cpage'
requête var surfalse
, d'appelerredirect_canonical()
, puis de'cpage'
rétablir ce qu'elle était; qui empêchera WordPress de vous rediriger.Pour insérer votre propre fonction, vous devez appeler les deux hooks
'init'
et,'template_redirect'
ainsi, assurez-vous de définir le'init'
hook à appeler après ledo_action()
noyau WordPress intérieur qui ajouteredirect_canonical()
:Alors bien sûr, vous devez faire quelque chose avec votre
'cpage'
. Vous pouvez soit vérifier la valeur renvoyée par,get_query_var('cpage')
soit ajouter un autre hook pour vous permettre de créer un modèle spécifique au commentaire, ce que j'ai fait. Il ajoutera un fichier de modèle de thème avec le même que celui qu'il chargerait normalement mais avec[comments].php
à la fin du nom au lieu de.php
, c'est-à-diresingle[comments].php
. Notez que j'ai défini la priorité pour ce filtre à 11; vous devrez peut-être définir un nombre encore plus grand si un plug-in que vous utilisez s'ajoute après votre hook:Et voici la preuve que tout fonctionne!
(source: mikeschinkel.com )
la source
functions.php
fichier de votre thème ou dans le.php
fichier d'un plugin que vous pourriez écrire." Mais vous dites que cela ne fonctionne pas? Que ne fait-il pas exactement? Avez-vous mis desecho "Test"; exit;
instructions dans chacune des fonctions pour vous assurer que les crochets tirent? Avez-vous des plugins qui peuvent être en conflit? Avez-vous essayé de changer11
à deux endroits en100?
Avez-vous inclus tout le code? Avez-vous créé un fichier de modèle de thème appelésingle[comments].php
?