Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 在URL中添加多个自定义帖子类型_Wordpress_Url_Custom Post Type - Fatal编程技术网

Wordpress 在URL中添加多个自定义帖子类型

Wordpress 在URL中添加多个自定义帖子类型,wordpress,url,custom-post-type,Wordpress,Url,Custom Post Type,我已经建立了一个WordPress网站,人们可以从经纪人那里租车。因此,我有两种自定义帖子类型: 经纪人 汽车 网站上大约有10辆不同的汽车。所有这些车对每个经纪人来说都完全一样 因此,我创建了一个页面模板page-brokers.php,其中列出了所有代理。 如果单击某个代理,则转到broker single-broker.php的详细页面 URL是saferent.be/broker/broker name 在经纪人的详细信息页面上,您将看到所有10辆不同的汽车。如果您单击一辆汽车,您将

我已经建立了一个WordPress网站,人们可以从经纪人那里租车。因此,我有两种自定义帖子类型:

  • 经纪人
  • 汽车
网站上大约有10辆不同的汽车。所有这些车对每个经纪人来说都完全一样

因此,我创建了一个页面模板page-brokers.php,其中列出了所有代理。 如果单击某个代理,则转到broker single-broker.php的详细页面

URL是
saferent.be/broker/broker name

在经纪人的详细信息页面上,您将看到所有
10辆不同的
汽车。如果您单击一辆汽车,您将进入汽车详细信息页面,即single-car.php

URL是
saferent.be/car/car name

在汽车详细信息页面的底部,是一个表单,用于联系您之前选择的经纪人。正如您在URL中看到的,没有提到所选代理

选择代理时,其信息保存在会话中,并推送到表单中的隐藏字段中

一切都很完美: -你选择一个经纪人 -您可以选择一辆车->转到汽车详细信息页面 -提交将信息发送给所选经纪人的汽车详细信息页面表单

我想要的结果是: -如果您选择了一个经纪人,则转到详细信息页面
saferent.be/broker/broker name/
(这已经可以了) -如果您选择了一辆汽车,您将进入汽车详细信息页面,该页面应如下所示:
saferent.be/broker/broker name/car/car name

考试网站:


经纪人位于主页底部。

您想保留该汽车详细信息页面吗?该页面将在
安全租赁下提供。be/car/car name

如果没有,那么-只需将汽车详细信息页面作为代理的子页面,此页面的url将是
saferent.be/broker/broker name/car/car name


如果你想为同一个页面创建多个不同的URL,尝试使用这个插件,我自己也做过类似的事情

这将放在您的函数文件中:

// 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;
        }
    }
}
然后在您的car模板中,您应该能够访问
$broker
post变量

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


希望这对您有所帮助。

同一辆车是否可以在不同的代理中?您可以使用ACF并选择带有关系字段的汽车代理,然后使用permalink manager(支持ACF)在url中使用该字段。是的,同一辆车可以在不同的代理中。我新创造的汽车“沃尔沃V40”可供经纪人x、y和z使用。这是同一辆车。您可以创建自定义重写规则来处理所需的URL结构(
/broker/broker name/car/car name
);但是,您可能更容易使用类似于插件的插件—使用此插件,只需使用以下设置:a)“源URL”:
/broker/([^/]+)/car/([^/]+)
b)“Regex”复选框:checked c)“匹配时”:d)“目标URL”:
/car/$2
让我们来看看。是的,这些汽车可能只在/broker/broker name/car/car name下可用,但如何将详细信息页面设置为儿童?我知道你可以把一个“正常”页面变成一个孩子。但是我的子页面是single-car.php…我已经尝试了你提到的插件。但是我必须使用什么常规表达呢?我尝试过:^broker/car/然后选择Type=自定义帖子类型(car)。但是/broker/broker name/car/car name还不可用。我已经联系了你提到的插件的开发人员,但是不可能。该插件只是重定向页面。在WordPress中,您可以将父级设置为任何页面。“即时详细信息”页面将父页面设置为特定代理。