我已经建立了一个WordPress网站,人们可以从经纪人那里租车。所以我有2种自定义帖子类型:
网站上大约有10种不同的汽车。所有这些汽车对于每个经纪人都是完全相同的。
因此,我创建了一个页面模板page-brokers.php,其中列出了所有经纪人。 如果单击经纪人,则转到经纪人single-broker.php的详细信息页面
URL为saferental.be/broker/broker-name
在经纪人的详细信息页面上,您将看到所有10 different
辆汽车。如果单击汽车,则转到汽车详细信息页面,该页面为single-car.php
URL为saferental.be/car/car-name
在汽车详细信息页面底部,是一个表格,用于联系您先前选择的经纪人。如您在URL中看到的那样,所选代理没有任何提及。
选择经纪人后,其经纪人信息将保存在会话中,并推入表单的隐藏字段中。
一切正常: -您选择经纪人 -您选择汽车->转到汽车详细信息页面 -提交汽车详细信息页面表单,该表单会将信息发送给选定的经纪人。
我想要的结果:
-如果您选择经纪人,则可以转到详细信息页面saferental.be/broker/broker-name/
(已经可以了)
-如果您选择了汽车,请转到“汽车详细信息”页面,该页面应如下所示:saferental.be/broker/broker-name/car/car-name
测试网站: http://safelease.houston-1.hybridmedia.be/
经纪人位于首页的底部。
答案 0 :(得分:0)
您是否想保留该汽车详细信息页面,该页面也会显示在saferental.be/car/car-name
下?
如果没有,那么-只需将汽车详细信息页面作为子页面放置到代理,该页面的URL将为saferental.be/broker/broker-name/car/car-name
如果您要为同一页面使用许多不同的url,请尝试使用此插件https://wordpress.org/plugins/mapping-multiple-urls-redirect-same-page/
答案 1 :(得分:0)
我自己做了类似的事情。
这将进入您的功能文件:
// Setup rewrite rules something like http://yourdomain.com/broker/my-broker/car/my-car
add_action( 'init', 'rewrites_init' );
function rewrites_init() {
add_rewrite_rule(
'broker/([-a-zA-Z0-9]+)/car/([-a-zA-Z0-9]+)$',
'index.php?broker=$matches[1]&car=$matches[2]',
'top' );
}
// Add variables
add_filter('query_vars', 'add_query_vars', 0);
function add_query_vars($vars) {
$vars[] = 'broker';
$vars[] = 'car';
return $vars;
}
// catch the request for this page
add_action('parse_request', 'parse_requests', 0);
function parse_requests() {
global $wp, $wp_query;
if(isset($wp->query_vars['broker']) && isset($wp->query_vars['car'])) {
// find the car post
$posts = new WP_Query( array(
'post_type' => 'car',
'name' => $wp->query_vars['car'],
'post_status' => 'publish'
));
if(!empty($posts) ) {
// set the global query or set your own variable
$wp_query = $posts;
// set the broker variable to use in your template
$broker = get_page_by_path( $wp->query_vars['broker'], OBJECT, 'broker' );
// include your custom post type template
if (include(locate_template('single-car.php', true))) {
exit();
}
} else {
// handle error
$wp_query->set_404();
status_header(404);
locate_template('404.php', true);
exit;
}
}
}
然后在您的汽车模板中,您应该可以访问$broker
帖子变量。
设置重写规则后,可能需要转到“管理员”->“设置”->“永久链接”并保存以设置重写。
希望这对您有所帮助。