Xin chào @Tom ,
Nếu tôi hiểu chính xác câu hỏi của bạn, bạn không cần phải biết cách thêm liên kết vào menu (có vẻ như bạn đã biết điều đó) nhưng thay vào đó cần học cách lấy liên kết của bạn để chuyển hướng chính xác, phải không?
Chuyển hướng đến một URL bên ngoài từ một mục menu của quản trị viên
Nếu vậy, điều bạn cần làm là không sử dụng chức năng mục menu mà thay vào đó hãy "móc" WordPress đủ sớm để nó không xuất ra bất cứ thứ gì ngoại trừ các tiêu đề HTTP. Móc sớm nhất khi gọi có /wp-admin/themes.php
vẻ là after_setup_theme
và nó hoạt động tốt.
Sử dụng "Menu Slug" để bạn có thể kiểm tra nó trong một cái móc
Nhưng để làm cho nó hoạt động, trước tiên chúng ta cần sửa đổi cuộc gọi của bạn add_theme_page
trong admin_menu
hook / create_theme_style_page()
chức năng của bạn . Chúng tôi đã bỏ tham số thứ năm (chức năng gọi để thực hiện tùy chọn quản trị viên) vì chúng tôi không cần nó và đã thay đổi tham số thứ tư ( "sên menu" ) themes.php?goto=build-styleguide-page
.
Mặc dù chúng tôi có thể đã chọn gần như mọi thứ theo nghĩa đen cho tham số thứ tư, nhưng chúng tôi sẽ chuyển hướng tôi chuyển đến cùng một trang ( themes.php
) như các tùy chọn xuất hiện khác để thống nhất. Tôi cũng tự ý đưa ra cái tên này goto
vì WordPress không sử dụng nó và nó dường như có ý nghĩa cho việc này.
add_action('admin_menu', 'create_theme_style_page');
function create_theme_style_page() {
add_theme_page(
'Theme Styleguide',
'Theme Styleguide',
'administrator',
'themes.php?goto=build-styleguide-page'
);
}
BTW, chúng tôi đã loại bỏ build_styleguide_page()
chức năng của bạn vì chúng tôi không cần nó cho giải pháp này.
Chuyển hướng trong Hook sớm nhất cho themes.php
:after_setup_theme
Là đoạn mã cuối cùng của chúng tôi, chúng tôi thực hiện after_setup_theme
hook trong redirect_from_admin_menu()
hàm của chúng tôi . Chúng tôi có bài kiểm tra để xem trang hiện tại có themes.php
phải không và để đảm bảo tham số URL goto
được truyền vào URL. Sau đó, nó kiểm tra giá trị của goto
việc sử dụng một câu lệnh switch
/ case
để xem liệu nó có giá trị của 'build-styleguide-page'
; nếu vậy nó sẽ chuyển hướng đến giả thuyết đã nêu của bạn, ví dụ Google nếu không chúng tôi chỉ chuyển hướng quay lại bảng điều khiển quản trị viên:
add_action('after_setup_theme', 'redirect_from_admin_menu');
function redirect_from_admin_menu($value) {
global $pagenow;
if ($pagenow=='themes.php' && !empty($_GET['goto'])) {
switch ($_GET['goto']) {
case 'build-styleguide-page':
wp_redirect("http://www.google.com");
break;
default:
wp_safe_redirect('/wp-admin/');
break;
}
exit;
}
}
Ghi chú:
Tôi đã chọn sử dụng câu lệnh switch
/ case
trong after_setup_theme
hook / redirect_from_admin_menu()
function để việc thêm các goto
chuyển hướng bổ sung sẽ dễ dàng hơn nếu bạn cần; chỉ cần thêm nhiều báo cáo trường hợp.
các wp_redirect()
và wp_safe_redirect()
chức năng không thực sự chấm dứt; bạn cần đưa ra một tuyên bố thoát rõ ràng để khiến WordPress dừng lại và không ghi đè chuyển hướng của bạn.
Hi vọng điêu nay co ich!
'-5'
và không-5
, khóa khác được coi là không hợp lệ (tôi nghĩ) .. (chuỗi âm hoạt động mặc dù, nếu tôi không nhầm) ..