自定义帖子类型和永久链接问题 - SEO 和结构

问题描述 投票:0回答:1

我看到这个问题之前已经被提出过,但他们似乎没有解决我的具体问题。但我确实觉得我的具体问题是一个广泛的问题。这可能看起来很矛盾,但请听我说完。

对于我正在使用 WordPress 开发的网站,我为他们所服务的县创建了一些页面。到目前为止,我已经为雄鹿县、蒙哥马利县和特拉华县提供了一份,但还会有更多。从那里,我们希望人们能够根据客户可以自行添加的县导航到“最近的工作”。因此,它可以是 1 到客户想要添加的任意数量的作业。这些页面将讨论特定城镇的特定工作,然后按工作类型(而不是县)链接到“相关工作”。因此,这些内容深入 3 个级别,县中心页面 > 特定城镇的特定工作 > 特定工作类型(即:宾夕法尼亚州雄鹿县 > 宾夕法尼亚州纽敦的窗户更换工作 > 任何地方的窗户更换工作)。

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

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

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

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

php wordpress url custom-post-type permalinks
1个回答
0
投票

考虑到单词

county
在您的 url 中是静态的,您可以使用它来使 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 后台的永久链接部分来完成此操作。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.