2009-11-09 81 views
22

Tôi muốn tạo trang WordPress mới thực sự là liên kết đến một trang web khác. Mục tiêu là để trang hiển thị trong danh sách các trang của tôi, nhưng thực sự gửi người dùng web đến URL mục tiêu.Tạo Trang WordPress chuyển hướng đến một URL khác

Ví dụ: giả sử tôi muốn bao gồm trang cho biết "Ảnh của tôi" nhưng thực sự chuyển hướng chúng đến Flickr.

Tôi đoán một cách để thực hiện việc này là sử dụng trang mẫu tùy chỉnh có hướng dẫn chuyển hướng bằng PHP, nhưng tiếc là tôi là người mới sử dụng PHP và không quen với cách thực hiện việc này ...

+0

Check-out http://bornvirtual.com/wordpress/redirect-404-error-in-wordpress/906/ (từ bình luận bằng Mazhar) –

Trả lời

32

Bạn có thể thực hiện hai cách này, cả hai cách này cần được thực hiện thông qua chỉnh sửa tệp mẫu của bạn.

Đầu tiên là chỉ cần thêm liên kết html vào điều hướng của bạn, nơi bạn muốn nó hiển thị.

Thứ hai (và tôi đoán, cái bạn đang tìm kiếm) là tạo mẫu trang mới, không quá khó nếu bạn có khả năng tạo tệp .php mới trong chủ đề/mẫu của bạn danh mục. Nội dung nào đó giống như mã bên dưới nên làm:

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

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

?> 

Trường hợp tên mẫu là bất kỳ thứ gì bạn muốn đặt và url trong hàm tiêu đề là url mới bạn muốn hướng người dùng đến. Sau khi bạn sửa đổi mã trên để đáp ứng nhu cầu của bạn, hãy lưu nó trong một tệp php trong thư mục chủ đề hiện hoạt của bạn vào tên mẫu. Vì vậy, nếu bạn để lại tên của mẫu của bạn "Page Redirect" tên trang php-redirect.php.

Sau khi được lưu, hãy đăng nhập vào chương trình phụ trợ WordPress của bạn và tạo trang mới. Bạn có thể thêm tiêu đề và nội dung vào nội dung nếu muốn, nhưng điều quan trọng cần lưu ý là ở phía bên phải, sẽ có tùy chọn thả xuống để bạn chọn mẫu trang nào sẽ sử dụng, với hiển thị mặc định Đầu tiên. Trong danh sách thả xuống đó, phải có tên của tệp mẫu mới để sử dụng. Chọn mẫu mới, xuất bản trang và bạn sẽ có màu vàng.

Ngoài ra, bạn cũng có thể thực hiện thao tác này bằng cách sử dụng phần Trường tùy chỉnh bên dưới trình chỉnh sửa cơ thể. Nếu bạn quan tâm, hãy cho tôi biết và tôi có thể dán mã cho anh chàng đó trong một phản hồi mới.

+3

Tôi nghĩ sẽ tốt hơn nếu sử dụng chức năng WordPress mặc định để thực hiện chuyển hướng: http://codex.wordpress.org/Function_Reference/wp_redirect – Aljullu

+2

Đó là một điểm tuyệt vời của Aljullu, nhưng nếu bạn chỉ cần truy cập mã trang web , tại sao thực hiện một cuộc gọi khác đến hàm cuối cùng chỉ sử dụng mã ở trên? Nếu không, nếu bạn đang ném một biến trong hỗn hợp và cần phải chà URL trước, tôi nghĩ bạn sẽ đúng khi sử dụng wp_redirect. – Schoffelman

2

Tôi không quen thuộc với các mẫu Wordpress, nhưng tôi giả định rằng các tiêu đề được gửi đến trình duyệt của WP trước khi mẫu của bạn thậm chí được tải. Do đó, phương pháp chuyển hướng chung của:

header("Location: new_url"); 

sẽ không hoạt động. Trừ khi có một cách để buộc gửi các tiêu đề thông qua một mẫu trước khi WP bất cứ điều gì, bạn sẽ cần phải sử dụng một số javascript như sau:

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

Đặt rằng trong phần này và nó sẽ được chạy khi tải trang. Phương pháp này sẽ không hoạt động ngay lập tức và nó cũng sẽ không hoạt động đối với những người bị tắt Javascript.

+1

Trên thực tế, bạn nên có ok để thêm tiêu đề(); vào một mẫu nếu được đặt ngay sau mã nhận xét php được sử dụng để đặt tên cho một tệp mẫu trang. Ngoài ra, bất kỳ mã nào được đặt trong tệp functions.php chủ đề hoạt động cũng sẽ được thực thi trước khi WP gửi bất kỳ tiêu đề nào. – Schoffelman

+0

Oh ok, hoàn hảo. – BraedenP

10

Tôi nhận thấy rằng các sự cố này thường được giải quyết tốt nhất ở lớp máy chủ. Bạn có quyền truy cập vào tệp .htaccess nơi bạn có thể đặt quy tắc chuyển hướng không? Nếu vậy:

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

Chuyển hướng này cũng sẽ đáp ứng "301 Đã chuyển vĩnh viễn" để cho biết trang Flickr (ví dụ) là URI vĩnh viễn cho trang cũ.

Nếu không thể, bạn có thể tạo mẫu trang tùy chỉnh cho mỗi trang được đề cập và thêm mã PHP sau vào đầu mẫu trang (thực tế, đây là tất cả những gì bạn cần trong mẫu:

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

More information about PHP headers.

+0

Tất nhiên, cần được viết là: header ('Location: http://uri.com', true, 301); –

+0

Dưới đây là một số thông tin khác về cách tạo mẫu WordPress tùy chỉnh: http://www.davidrisley.com/2009/01/20/how-to-custom-page-template-wordpress/ –

+0

ý của bạn là tiêu đề ('Location: uri .com ', true, 301); -: D –

7

Cách khác, sử dụng một bộ lọc.

tạo một trang trống trong blog WordPress của bạn, đặt tên một cách thích hợp với những gì bạn cần nó được. Hãy lưu ý của post_id. Sau đó tạo một bộ lọc làm thay đổi permalink của nó.

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

Bằng cách này, url sẽ hiển thị chính xác trong trang không cần chuyển hướng vui nhộn.

Nếu bạn cần thực hiện điều này, hãy nghĩ đến việc sử dụng các trường tùy chỉnh sau để xác định giá trị postmeta cho "offsite_url" hoặc thứ gì đó tương tự, sau đó bạn có thể tạo trang nếu cần, nhập giá trị "offsite_url" và sau đó sử dụng một bộ lọc như một ở trên để thay vì kiểm tra post_id bạn kiểm tra xem nó có postmeta cần thiết và thay đổi permalink khi cần thiết.

0

Có 3 cách để làm điều này:

  1. Bằng cách thay đổi mã 404.php của bạn.
  2. Bằng cách sử dụng plugin wordpress.
  3. Bằng cách chỉnh sửa tệp .htaccess của bạn.

Toàn bộ hướng dẫn được đưa ra tại http://bornvirtual.com/wordpress/redirect-404-error-in-wordpress/906/

+0

Tôi đã chuyển đổi liên kết để nhận xét, phần còn lại đã được bao gồm trong câu trả lời accepter. –

Các vấn đề liên quan