我编写了一个webshop插件,它通过REST连接到一个充满产品的自定义后端,并在一个页面中呈现产品。后端REST api支持分层类别,然后在叶子中有产品。因此用户可以点击Cat1 - > subcat - > sub sub cat - >产品X
这很有效。但我希望这些网址是/ categories / cat1 / subcat / subsubcat /,这是我无法工作的。
我目前的架构是这样的:我有一个带有slug'类别'的页面,在那个页面我有这个短代码:[webshop_categories]
我的插件在PHP中对后端进行卷曲调用,并呈现产品。它通过观察URL(非分层,但说:/ categories / 123 /)来获取类别ID,然后获取该类别ID的子类别和产品。
现在出于搜索引擎优化的目的,我希望有分层网址。
这一切都有效,因为如果我创建/ categories / 123,wordpress将转到该页面,找到短代码并执行它。
如果我会去/ categories / myCat / 123 / mySubCat / 345,它会尝试找到一个带有slug mycat的页面,产生一个404.
我可以阻止wordpress这样做吗?
希望我能清楚地解释一下。
答案 0 :(得分:1)
您需要使用插件来确定是否要处理URL。我用我编写的专有插件来做这件事。
如果您的插件要处理网址,您需要查看:
add_action('template_redirect', array(&$this,'template_redirect'));
public function template_redirect(){
global $wp_query;
if($wp_query->is_404){
$wp_query->is_404=false;
$wp_query->is_archive=true;
}
header($_SERVER['SERVER_PROTOCOL'].' 200 OK');
//function to render your output here
exit;
}