2009-11-09 20 views
22

Chciałem utworzyć nową stronę WordPress, która w rzeczywistości jest linkiem do innej witryny. Celem jest wyświetlenie strony na liście moich stron, ale w rzeczywistości wysłanie użytkownika do docelowego adresu URL.Utwórz stronę WordPress, która przekierowuje do innego adresu URL.

Załóżmy na przykład, że chcę dołączyć stronę, która wskazuje "Moje zdjęcia", ale faktycznie przekierowuje je do serwisu Flickr.

Zgaduję Jednym ze sposobów osiągnięcia tego celu jest wykorzystywanie niestandardowy szablon strony z instrukcją przekierowanie w PHP, ale niestety jestem nowicjuszem do PHP i nie jestem zaznajomiony z drogą do osiągnięcia tego ...

+0

Wyjazd http://bornvirtual.com/wordpress/redirect-404-error-in-wordpress/906/ (z komentarzem Mazhar) –

Odpowiedz

32

Można to zrobić na dwa sposoby, z których oba muszą być wykonane poprzez edycję plików szablonów.

Pierwszym z nich jest dodanie linku html do nawigacji tam, gdzie ma się pojawiać.

Drugim (i moim zdaniem, tym, którego szukasz) jest utworzenie nowego szablonu strony, który nie jest zbyt trudny, jeśli masz możliwość utworzenia nowego pliku .php w swoim szablonie/szablonie informator. Coś jak poniżej kod powinien zrobić:

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

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

?> 

Jeżeli nazwa szablonu to, co chcesz, aby ustawić go zbyt oraz adres URL w funkcji header jest nowy url chcesz skierować użytkownika do. Po zmodyfikowaniu powyższego kodu zgodnie z potrzebami, zapisz go w pliku php w aktywnym folderze motywu do nazwy szablonu. Tak więc, jeśli zostawisz nazwę szablonu "Przekierowanie strony" nazwij plik php page-redirect.php.

Po zapisaniu, zaloguj się do swojego zaplecza WordPress i utwórz nową stronę. Możesz dodać tytuł i treść do treści, jeśli chcesz, ale ważne, aby pamiętać, że po prawej stronie powinna być rozwijana opcja wyboru szablonu strony do użycia, z domyślnym wyświetlaniem pierwszy. Z tej rozwijanej listy powinna być nazwa nowego pliku szablonu, który ma zostać użyty. Wybierz nowy szablon, opublikuj stronę i powinieneś być złoty.

Można to również zrobić dynamicznie, korzystając z sekcji Pola niestandardowe poniżej edytora treści. Jeśli jesteś zainteresowany, daj mi znać i mogę wkleić kod dla tego gościa w nowej odpowiedzi.

+3

Myślę, że lepiej byłoby użyć domyślnej funkcji WordPress do przekierowania: http://codex.wordpress.org/Function_Reference/wp_redirect – Aljullu

+2

To świetny punkt Aljullu, ale jeśli zamierzasz tylko zakodować adres URL strony , po co wykonywać inne połączenie z funkcją, która ostatecznie używa właśnie powyższego kodu? W przeciwnym razie, jeśli wyrzucasz zmienną w miksie i musisz najpierw wyzerować adres URL, myślę, że poprawne byłoby korzystanie z wp_redirect. – Schoffelman

2

Nie znam szablonów Wordpress, ale zakładam, że nagłówki są wysyłane do przeglądarki przez WP, zanim szablon zostanie załadowany. Z tego powodu wspólna metoda przekierowania:

nie będzie działać. Chyba że istnieje sposób, aby wymusić wysyłanie nagłówków przez matrycę przed WP nic nie robi, trzeba użyć trochę Javascript tak:

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

Put, że w sekcji i to będzie działać po załadowaniu strony. Ta metoda nie będzie natychmiastowa, a także nie będzie działać dla osób z wyłączoną obsługą JavaScript.

+1

Właściwie powinno być OK, aby dodaj nagłówek(); do szablonu umieszczonego zaraz po kodzie komentarza php używanym do nazwania pliku szablonu strony. Ponadto każdy kod umieszczony w aktywnym pliku function.php powinien również zostać wykonany zanim WP wyśle ​​jakiekolwiek nagłówki. – Schoffelman

+0

Oh ok, idealnie. – BraedenP

10

Odkryłem, że te problemy często są najlepiej rozwiązywane na poziomie serwera. Czy masz dostęp do pliku .htaccess, w którym możesz umieścić regułę przekierowania? Jeśli tak, to:

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

To przekierowanie będzie również służyć „301 Przeniesiono na stałe” odpowiedzi, aby wskazać, że strona Flickr (na przykład) jest trwały URI dla starej strony.

Jeśli nie jest to możliwe, można utworzyć szablon niestandardowy stron dla każdej strony w pytaniu i dodaj następujący kod PHP do górnej części szablonu strony (w rzeczywistości, to jest wszystko, czego potrzeba w szablonie:

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

More information about PHP headers.

+0

Oczywiście, powinno to być napisane jako: header ("Location: http://uri.com", true, 301); –

+0

Oto więcej informacji dotyczących tworzenia niestandardowego szablonu WordPress: http://www.davidrisley.com/2009/01/20/how-to-custom-page-template-wordpress/ –

+0

masz na myśli nagłówek ("Lokalizacja: uri .com ', true, 301); -: D –

7

Ewentualnie użyć filtru.

Utwórz pustą stronę w swoim blogu WordPress, nazwany odpowiednio do tego, co trzeba go mieć. Zanotuj post_id. Następnie należy utworzyć filtr to zmienia jej link bezpośredni.

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; 
} 

W ten sposób adres URL pojawi się poprawnie na stronie, nie są wymagane żadne przekierowania.

Jeśli chcesz to zrobić bardzo dużo, pomyśl o użyciu niestandardowych pól postmeta do zdefiniowania wartości postmeta dla "offsite_url" lub czegoś podobnego, wtedy możesz utworzyć strony według potrzeb, wpisać wartość "offsite_url" i następnie użyj filtra podobnego do powyższego, zamiast sprawdzać sprawdzaną wartość post_id, aby sprawdzić, czy ma on wymagany postmeta i w razie potrzeby zmienić permalink.

Powiązane problemy