在网址中添加多种自定义帖子类型

时间:2018-11-09 12:52:11

标签: wordpress url custom-post-type

我已经建立了一个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/

经纪人位于首页的底部。

2 个答案:

答案 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帖子变量。

设置重写规则后,可能需要转到“管理员”->“设置”->“永久链接”并保存以设置重写。

希望这对您有所帮助。