Tôi có một bảng cơ sở dữ liệu bên ngoài WordPress mà tôi cần để tạo điểm cuối cho. Tôi đã tạo một trang /cars/
nơi tôi dự định sử dụng một mẫu trang để tạo liên kết. Tôi muốn cho url trông giống như /cars/camaro/
( /cars/%model%/
). Ban đầu tôi nghĩ rằng tôi có thể làm điều đó với các điểm cuối nhưng không chắc chắn làm thế nào để làm cho chúng động dựa trên con sên được kéo từ Bảng mô hình. Tôi cũng không chắc liệu việc sử dụng thẻ Permalink Architecture có dễ dàng hơn hay tốt hơn.
Tôi thậm chí không hoàn toàn chắc chắn bắt đầu từ đâu, tôi đã tạo các điểm cuối "tĩnh" trước đây để tôi có cơ sở để nhảy ra nhưng khi tôi vào request
bộ lọc, tôi không biết phải làm gì.
/**
* Add endpoint to handle models
*/
function theme_endpoints() {
add_rewrite_endpoint( 'cars', 'EP_PAGES' ); // Since cars is our base
}
add_action( 'init', 'theme_endpoints' );
/**
* Filter request variables
* @param array $vars
* @return array $vars
*/
function theme_perma_requests( $vars ) {
if( isset( $vars['model'] ) ) {
$vars['model_template'] = true;
}
return $vars;
}
add_filter( 'request', 'theme_perma_requests' );
Ý tôi là, điều này cho phép tôi vào template_include của tôi (đó là lý do tại sao tôi đã thêm model_template
biến) nhưng nó không thực sự viết lại URL. Vì vậy, sau đó tôi bắt đầu chơi vớiadd_rewrite_rule()
/**
* Theme rewrite rules
*/
function theme_rewrite_rules() {
add_rewrite_rule( '^cars/([^/]*)/?$', 'index.php?page_id=8&model=$matches[0]', 'top' );
}
add_action( 'init', 'theme_rewrite_rules' );
Tôi đã xóa các permalinks của mình nhưng việc viết lại dường như không có hiệu lực, tôi chỉ có thể cho rằng có gì đó không đúng với cách viết quy tắc.
Tôi có cần cả quy tắc điểm cuối và quy tắc viết lại hay chỉ một trong hai? Tôi đang đi về tất cả sai? Làm thế nào tôi có thể đạt được cấu trúc permalink của /cars/camaro/
?
add_rewrite_tag()
là một điểm khởi đầu tốt.