Créer une Page WordPress qui redirige vers une autre URL

je voulais créer une nouvelle page WordPress qui est en fait un lien vers un autre site. Le but est de faire apparaître la page dans une liste de mes pages, mais en fait envoyer l'utilisateur web à L'URL cible.

par exemple, disons que je veux inclure une page qui indique "mes Photos" mais qui les redirige vers Flickr.

je devine qu'une façon d'accomplir ceci est d'utiliser une page template personnalisée avec une instruction de redirection en PHP, mais malheureusement je suis un internaute novice en PHP et je ne suis pas familier avec la façon d'y parvenir...

24
demandé sur Dscoduc 2009-11-09 05:23:07
la source

7 ответов

Vous pouvez accomplir ceci de deux façons, toutes les deux doivent être faites en éditant vos fichiers de template.

le premier est juste pour ajouter un lien html à votre navigation où que vous vouliez qu'il apparaisse.

le second (et à mon avis, celui que vous recherchez) est de créer un nouveau modèle de page, ce qui n'est pas trop difficile si vous avez la capacité de créer un nouveau .fichier php dans votre répertoire theme/template. Quelque chose comme le code ci-dessous devrait faire:

<?php /*  
Template Name: Page Redirect
*/ 

header('Location: http://www.nameofnewsite.com');
exit();

?>

où le nom du modèle est celui que vous voulez définir aussi et l'url dans la fonction d'en-tête est la nouvelle url que vous voulez diriger un utilisateur. Après vous modifiez le code ci-dessus pour répondre à vos besoins, l'enregistrer dans un fichier php dans votre thème actif dossier au nom du modèle. Donc, si vous laissez le nom de votre modèle "Page Redirect" le nom de la page de fichier php-redirect.php.

après avoir été sauvegardé, connectez-vous à votre backend WordPress, et créez une nouvelle page. Vous pouvez ajoutez un titre et du contenu au corps si vous le souhaitez, mais la chose importante à noter est que du côté droit, il devrait y avoir une option drop down pour vous de choisir le modèle de page à utiliser, avec affichage par défaut en premier. Dans cette liste déroulante, il devrait y avoir le nom du nouveau fichier de template à utiliser. Sélectionnez le nouveau modèle, publiez la page, et vous devriez être d'or.

Vous pouvez également le faire dynamiquement en utilisant la section Champs personnalisés sous l'éditeur de corps. Si vous êtes intéressé, dites-le moi et je peux coller le code pour ce type dans une nouvelle réponse.

34
répondu Schoffelman 2009-11-19 17:45:54
la source

j'ai trouvé que ces problèmes sont souvent mieux résolus à la couche serveur. Avez-vous accès à un .fichier htaccess où vous pourriez placer une règle de redirection? Si oui:

RedirectPermanent /path/to/page http://uri.com

cette redirection servira aussi une réponse" 301 déplacé de façon permanente " pour indiquer que la page Flickr (par exemple) est L'URI permanent pour l'ancienne page.

si ce n'est pas possible, vous pouvez créer un modèle de page personnalisé pour chaque page en question, et ajouter le code PHP suivant en haut le modèle de page (en fait, c'est tout ce dont vous avez besoin dans le modèle:

header('Location: http://uri.com, true, 301');

Plus d'informations sur PHP des en-têtes.

11
répondu Jason Leveille 2009-11-09 06:08:18
la source

alternativement, utilisez un filtre.

créer une page vide dans votre blog WordPress, nommé de manière appropriée à ce que vous avez besoin qu'il soit. Prenez note du post_id. Puis créer un filtre qui modifie son permalien.

add_filter('get_the_permalink','my_permalink_redirect');
function my_permalink_redirect($permalink) {
    global $post;
    if ($post->ID == your_post_id_here) {
        $permalink = 'http://new-url.com/pagename';
    }
    return $permalink;
}

de cette façon l'url apparaîtra correctement dans la page aucune redirection Drôle n'est requise.

si vous avez besoin de faire cela beaucoup, alors pensez à utiliser les champs personnalisés postmeta pour définir une valeur postmeta pour "offsite_url" ou quelque chose comme ça, ensuite, vous pouvez créer des pages au besoin, entrer la valeur "offsite_url" et ensuite utiliser un filtre comme celui ci-dessus au lieu de vérifier le post_id que vous vérifiez pour voir s'il a la postmeta requise et modifier le permalink au besoin.

7
répondu Gipetto 2009-11-10 09:23:40
la source

Je ne suis pas familier avec les modèles Wordpress, mais je suppose que les en-têtes sont envoyés au navigateur par WP avant même que votre modèle soit chargé. En raison de la méthode de redirection:

header("Location: new_url");

ne fonctionne pas. A moins qu'il n'y ait un moyen de forcer L'envoi des en-têtes à travers un modèle avant que WP ne fasse quoi que ce soit, vous aurez besoin D'utiliser du Javascript comme ceci:

<script language="javascript" type="text/javascript">
document.location = "new_url";
</script>

mettez cela dans la section et il sera exécuté lorsque la page se chargera. Cette méthode ne sera pas instantanée, et il ne fonctionnera pas non plus pour les personnes avec Javascript désactivé.

3
répondu BraedenP 2009-11-09 05:54:57
la source

Utilisez le plugin" raw"https://wordpress.org/plugins/raw-html/ Alors c'est aussi simple que:

[raw]
<script>
window.location = "http://www.site.com/new_location";
</script>
[/raw]
1
répondu Jeroenv3 2014-04-02 11:29:46
la source

Il y a 3 façons de le faire:

  1. En changeant votre 404.php code.
  2. en utilisant des plugins wordpress.
  3. en éditant votre .htaccess fichier.

tutoriel Complet donné à http://bornvirtual.com/wordpress/redirect-404-error-in-wordpress/906/

0
répondu Mazhar 2012-08-05 14:51:39
la source

j'ai trouvé un plugin qui m'a aidé à faire cela en quelques secondes sans modifier le code:

https://wordpress.org/plugins/quick-pagepost-redirect-plugin/

je l'ai trouvé ici: http://premium.wpmudev.org/blog/wordpress-link-title-external-url/

0
répondu Ryan 2014-09-19 20:38:56
la source

Autres questions sur