Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 自定义帖子类型slug和permalinks问题-SEO和结构_Wordpress_Url_Seo_Custom Post Type_Permalinks - Fatal编程技术网

Wordpress 自定义帖子类型slug和permalinks问题-SEO和结构

Wordpress 自定义帖子类型slug和permalinks问题-SEO和结构,wordpress,url,seo,custom-post-type,permalinks,Wordpress,Url,Seo,Custom Post Type,Permalinks,我知道这个问题以前有人提过,但他们似乎没有解决我的具体问题。不过,我确实觉得我的具体问题涉及面很广。这似乎有些矛盾,但请听我说完 对于我在WordPress中工作的一个站点,我为他们服务的县创建了一些页面。到目前为止,我已经为巴克郡、蒙哥马利郡和特拉华郡准备了一个,但还有很多。从那里,我们希望人们能够导航到“最近的工作”,基于客户可以添加自己的县。因此,它可以是客户想要添加的工作数量的1:1。这些页面将讨论特定城镇的特定工作,然后按工作类型(而不是县)链接到“相关工作”。因此,这些工作分为三个层

我知道这个问题以前有人提过,但他们似乎没有解决我的具体问题。不过,我确实觉得我的具体问题涉及面很广。这似乎有些矛盾,但请听我说完

对于我在WordPress中工作的一个站点,我为他们服务的县创建了一些页面。到目前为止,我已经为巴克郡、蒙哥马利郡和特拉华郡准备了一个,但还有很多。从那里,我们希望人们能够导航到“最近的工作”,基于客户可以添加自己的县。因此,它可以是客户想要添加的工作数量的1:1。这些页面将讨论特定城镇的特定工作,然后按工作类型(而不是县)链接到“相关工作”。因此,这些工作分为三个层次:县中心页面>特定城镇的特定工作>特定工作类型(即:巴克县,宾夕法尼亚州>纽敦的窗户更换工作,宾夕法尼亚州>任何地方的窗户更换工作)

希望这是有道理的。所以我所做的就是为每个县创建一个页面。然后我创建了一个自定义的职位类型:County Jobs。我为每个县创建了自定义分类法,以便按县对它们进行分组。我可能还需要分类法来按工作类型对它们进行分组,但我还没有。我将模板“single county job.php”和自定义字段设置为仅在该帖子类型上显示。当URL中显示post类型slug“/country job/”时,问题就出现了。再加上额外的级别对SEO排名不利。如果你在谷歌搜索任何东西,你会看到搜索结果的前几页显示只有两个层次的网站:“URL.com/level1/level2”和任何带有“/level3/”的内容最多出现在第三页(除了亚马逊或易趣等网站)。理想情况下,我希望URL为:“/bucks county pa/post title”而不是“/county job/bucks county pa/post title”。用户从“/bucks county/”页面转到“/county job/bucks county pa/帖子标题”也没有意义

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

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


我被卡住了!你能提供的任何帮助或见解都将是巨大的帮助

考虑到您的url中的单词
country
是静态的,您可以使用它来让Wordpress识别您试图请求的内容。您可以使用筛选器添加自己的重写规则:

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);
}
第二个重要部分是告诉WorpAddress不要再使用以
/country job/
为前缀的链接。您可以使用过滤器执行此操作:


不要忘记,您需要刷新重写规则才能使此脚本正常工作。您可以通过访问WP back office中的Permalinks部分来实现这一点。

考虑到url中的单词
county
是静态的,您可以使用它来让Wordpress识别您试图请求的内容。您可以使用筛选器添加自己的重写规则:

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);
}
第二个重要部分是告诉WorpAddress不要再使用以
/country job/
为前缀的链接。您可以使用过滤器执行此操作:


不要忘记,您需要刷新重写规则才能使此脚本正常工作。您可以通过访问WP后台的Permalinks部分来实现这一点。

在这种情况下,bucks county pa的
是什么?是郡名?对,那就是郡名。到目前为止,我有三个县,但最终会有20多个。到目前为止,这三个州分别是
/bucks county pa/,/delaware county pa/,/montgomery county pa/
。之后我们将在宾夕法尼亚州、新泽西州和德州设立其他县。现在我将它们设置为分类法,但最终——给出了一个建议的解决方案——我不确定它们需要什么。我只是确定它们需要是URL的一部分。所以slug结构是
[country name]-country-[state code]
,对吗?所以你的鼻涕虫里总是有“郡”这个词?对。:)这就是我们组织工作所在城市的方式。在这种情况下,
bucks county pa
是什么?是郡名?对,那就是郡名。到目前为止,我有三个县,但最终会有20多个。到目前为止,这三个州分别是
/bucks county pa/,/delaware county pa/,/montgomery county pa/
。之后我们将在宾夕法尼亚州、新泽西州和德州设立其他县。现在我将它们设置为分类法,但最终——给出了一个建议的解决方案——我不确定它们需要什么。我只是确定它们需要是URL的一部分。所以slug结构是
[country name]-country-[state code]
,对吗?所以你的鼻涕虫里总是有“郡”这个词?对。:)这就是我们组织工作所在城市的方式。嗨,瓦德,谢谢你提出了清晰的解决方案——但由于我上面提到的原因,重定向确实不理想。我想能够设置这个没有任何黑客。我完全接受你的想法,但如果你有理由认为这是一个干净、良好的实践解决方案。我还在学习。你能解释一下我为什么要这样做吗?问题是Wordpress需要一个自定义帖子类型的前缀-你的url的前缀是从你的CPT定义中获取的,并且被WP用来知道要调用的wich归档页面。因此,如果我们从url中删除这些信息,Wordpress就没有办法知道该引用哪个CPT,他已经丢失了。在我看来,重写规则是一个有效的解决方案,应该