自定义帖子类型slug和永久链接问题 - 搜索引擎优化和结构

时间:2015-08-19 15:38:58

标签: wordpress url seo custom-post-type permalinks

我之前提到过这个问题,但它们似乎没有解决我的具体问题。我确实觉得我的具体问题很广泛。这可能看似矛盾但听我说。

对于我在WordPress中工作的网站,我为他们服务的县创建了一些网页。到目前为止,我有雄鹿,蒙哥马利和特拉华州的一个,但还有更多。从那里我们希望人们能够根据客户可以添加的县来导航到“近期工作”。因此,客户想要添加的工作数量可以是1。这些页面将讨论特定城镇中的特定工作,然后按工作类型链接到“相关工作”,而不是县。所以这些深入3级,县中心页面>特定城镇的具体工作>具体的工作类型(即:Bucks County,PA> Newtown,PA的窗口更换工作>窗口更换工作在哪里)。

希望这是有道理的。所以我所做的是为每个县创建一个页面。然后我创建了一个自定义帖子类型:郡工作。我为每个县创建了自定义分类法,按县分组。我可能还需要按照工作类型对分类进行分类,但我还没有。我将模板“single-county-job.php”和我的自定义字段设置为仅显示在此帖子类型上。问题出现在URL中显示的帖子类型slug“/ county-job /”。增加额外的水平对SEO排名不利。如果您在Google中搜索任何内容,您会看到结果的第一页显示只有两个级别的网站:“URL.com/level1/level2”和任何带有“/ level3 /”的内容最多只能在第三页上显示(除亚马逊或eBay等网站外)。理想情况下,我希望URL为:“/ bucks-county-pa / post-title”not“/ county-job / bucks-county-pa / post-title”。用户从“/ bucks-county /”页面转到“/ county-job / bucks-county-pa / post-title”也没有意义。

所以我找到了多种方法来从网址中获取slug但是所有结果都是404.基本上WordPress不再将帖子识别为帖子。我可以添加一些重定向规则以绕过404,但这对SEO也不利。我也读到这是不好的做法,一个黑客,不应该这样做。

您过去是否设置了类似的页面/帖子,您是如何处理的?那个slu is是一个问题,但是为每个县制定一个CPT也不是一个选择,因为有太多的东西,它们都是相同的设置 - 它只是没有意义。也许这不应该是CPT,但那我该如何处理呢?它似乎不应该是页面,我将如何处理自定义字段?

我被卡住了!您可以提供的任何帮助或见解都将是一个巨大的帮助。

1 个答案:

答案 0 :(得分:0)

考虑到您的网址中的单词county是静态的,您可以使用它来让Wordpress识别您尝试请求的内容。您可以使用generate_rewrite_rules过滤器添加自己的重写规则:

add_filter('generate_rewrite_rules', 'my_rewrite', 9);
function my_rewrite($wp_rewrite)
{
    $wp_rewrite->rules = array_merge(array(
        '^([^-]*)-county-([^/]*)/([^/]*)/?$' => 'index.php?post_type=county-job&county=$matches[1]-county-$matches[2]&county-job‌​=$matches[3]'
    ), $wp_rewrite->rules);
}

第二个重要的部分是告诉Worpdress不再使用/county-job/作为前缀的链接。您可以使用post_type_link过滤器执行此操作:

add_filter('post_type_link', 'my_post_link', 1, 3);
add_filter('post_link', 'my_post_link', 10, 3);
add_filter('page_link', 'my_post_link', 10, 3);
function my_post_link($post_link, $id = 0) {
  $post = get_post($id);
  if(is_object($post) && $post->post_type == 'job') {
      return str_replace('county-job/', '', $post_link);
  }
  return $post_link;
}

请勿忘记您需要刷新重写规则才能使此脚本正常运行。您可以访问WP后台的固定链接部分来完成此操作。