在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。
如何获得我需要的网址结构?
答案 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