Wordpress自定义帖子类型永久链接父/子但不同类型

时间:2014-09-17 12:20:33

标签: wordpress rewrite permalinks

在wordpress中,我创建了2种自定义帖子类型:公司和优惠 优惠与具有名为companyname的自定义域的公司相关联。

因此,如果要约提供了“我的报价”。与公司' ACME'相关联,两种邮政类型都包含名为' companyname'的自定义字段。与ACME的价值。所以没有问题。

我使用默认的slug'公司'注册了两个自定义的帖子类型。和'提供'

商店永久链接网址现在是:www.mywebsite.nl/company/acme/ 现在提供永久链接网址:www.mywebsite.nl/offer/my-offer /

我想要的是商品固定链接更改为www.mywebsite.nl/company/acme/my-offer /

我通过过滤器/动作/钩子(和stackoverflow)搜索了很多,但我找不到解决方案。我甚至尝试将后期类型分层,但是在一个'提供' posttype我不能成为一家'公司' posttype the parent。

如何获得我需要的网址结构?

1 个答案:

答案 0 :(得分:0)

您需要解决两件事。

首先,您需要将要约的网址更改为新表单。这可以通过指定一个可以为每个商品修改的slug来完成。

注册帖子类型时,向slug添加一个变量:

    // add modified 
    register_post_type('company_offer_type',array(
    ...
       'rewrite' => array(
            'slug' => 'company/%company%'
        ),
    ));

    // filter to rewrite slug
    add_filter( 'post_type_link', 'postTypeLink', 10, 2);
    function postTypeLink($link, $post)
    {
        if (get_post_type($post) === 'company_offer_type') {
            $company = // get company from $post
            $link = str_replace('%company%', $company, $link);
        }
        return $link;
    }

其次,您希望wordpress将传入的URL请求重定向到此帖子。通过在init操作上添加重写规则来执行此操作:

    // add rewrite rule for custom type
    add_rewrite_rule(
        'company/(.*)/(.*)',
        'index.php?post_type=company_offer_type&name=$matches[2]',
        'top'
    );

以下是两篇文章,其中包含更多信息:

http://code.tutsplus.com/articles/the-rewrite-api-the-basics--wp-25474

http://code.tutsplus.com/articles/the-rewrite-api-post-types-taxonomies--wp-25488