在一个URL中组合多个分类

时间:2015-03-12 作者:JacobTheDev

我正在创建一个复杂的站点,其中包含一个带有两个自定义分类法的产品目录。它们是品牌和类型。

品牌-佳能-东芝-惠普

类型.打印机.扫描仪.多功能

我需要一个页面,找到所有的产品,是一个品牌和一种类型的任何组合。品牌在这两者中更为重要,因此应该按照品牌->类型进行过滤(尽管如果可以互换的话,这将是理想的选择)。

我可以通过根据添加到URL末尾的参数修改查询来实现这一点。例如,此URL可以是以下URL之一:

但我被告知这对于SEO目的来说并不好。理想情况下,我希望URL的结构如下http://www.example.com/brand/type/. 这将导致如下URL:

2 个回复
最合适的回答,由SO网友:cybmeta 整理而成

此重写规则应该有效(假设“brand”和“type”是分类法注册的名称):

function custom_rewrite_rules() {
    add_rewrite_rule(\'^brand/(.*)/type/(.*)?\', \'index.php?brand=$matches[1]&type=$matches[2]\', \'top\');
}
add_action(\'init\', \'custom_rewrite_rules\');
在站点中保存此代码后,请记住刷新重新布线规则。

然后,您需要在多个位置挂接以修复问题。例如,您可能需要挂钩wp_title 为文档生成正确的标题,例如“HP打印机”或“HP”,因为这不会由WordPress自动处理。我无法列出您需要解决的所有问题。

SO网友:gmanou

在挖掘答案时this one, 我发现here 以下重写功能:

function eg_add_rewrite_rules() {
  global $wp_rewrite;
  $new_rules = array(
      \'user/(profession|city)/(.+?)/(profession|city)/(.+?)/?$\' => \'index.php?post_type=eg_event&\' . $wp_rewrite->preg_index(1) . \'=\' . $wp_rewrite->preg_index(2) . \'&\' . $wp_rewrite->preg_index(3) . \'=\' . $wp_rewrite->preg_index(4),
      \'user/(profession|city)/(.+)/?$\' => \'index.php?post_type=eg_event&\' . $wp_rewrite->preg_index(1) . \'=\' . $wp_rewrite->preg_index(2)
  );
  $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action( \'generate_rewrite_rules\', \'eg_add_rewrite_rules\' );
此函数采用如下url:example。com/user/profession/designer、knight/city/athens、gotham/并将其转换为变量:

$proffession = "designer,knight";
$city = "athens,gotham";
可以在分类法中使用。php

更多信息:https://stackoverflow.com/a/34624138/5594521

工作演示:http://playground.georgemanousarides.com/

希望有帮助!

结束

相关推荐

Unwanted slug in my website

有一个不需要的鼻涕虫/question/ 在我的WordPress网站上。段塞自动更改为/question/ 当我打开许多页面时。我已经彻底检查了我的phpMyAdmin,我没有/question/ 我的网站上的slug。我的.htaccess 除了标准代码之外,没有其他东西。虽然我有一个自定义的帖子类型/questions/ 但这似乎确实是个问题。这很烦人,因为当我打开我的自定义登录页面时www.ideabroad.com/sign-in/, 它也更改为www.ideabroad.com/questio