解决自定义帖子类型名称与页面固定链接冲突(相同的插件)

时间:2014-02-19 作者:Henrik Erlandsson

我有一个名为“visningshus”的自定义帖子类型,还有一个包含该段代码的页面。这是应该(必须)的。

当前,“http://my-site.com/visningshus“列出该类型的所有帖子。我想显示具有永久链接段塞的页面。

我怎样才能使Wordpress不使post类型名称优先,而是使永久链接优先,并显示页面?

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

最简单的方法是禁用此CPT的存档页面:

register_post_type( \'visningshus\',
    array(
        [...]
        \'has_archive\' => false,
        [...]
    )
);
不要忘记在“设置”>“永久链接”中刷新永久链接

SO网友:Andrew Herder

我的声誉不高,无法评论@Carl的帖子,但他的回答是正确的(至少对于保持page slugcustom post type slug 相同,不使用存档。php文件)

但他的回答会给出分页错误。要避免分页错误,请执行以下操作:

add_rewrite_rule(\'^visningshus/page/([0-9]+)\',\'index.php?pagename=visningshus&paged=$matches[1]\', \'top\');
这将查看分页,获取页码,然后在另一面强制它使用具有匹配slug的页面,然后插入page变量。

in addition\'has_archive\' => false, 上面发布的内容应该能够实现所需的功能。

正如其他人所说,在进行此更改后,请确保通过访问设置>永久链接刷新重写规则。

希望这对别人有帮助,因为我知道这让我很难受了很长时间。

SO网友:Carl

Tjena Henrik!

我认为您所需要做的就是在已经创建的Wordpress重写规则中添加一个重写规则。将此代码段添加到函数中。php的主题或将其作为单独的pugin。。。

add_action(\'init\', function () {
     add_rewrite_rule(\'visningshus/?$\',\'index.php?pagename=visningshus\', \'top\');
     flush_rewrite_rules();
}, 1000);

SO网友:Bikram

如果您自己注册了帖子类型,则可以更改主题或插件中的存档状态和URL。

\'has_archive\' => true, 启用post类型permalink中的存档。所以将其更改为

\'has_archive\' => false, 将禁用存档。

\'has_archive\' => \'custom-slug\', 将在自定义slug中启用存档(http://my-site.com/custom-slug/).

如果一个插件或你的主题注册了它,你可以像卡夫那样禁用它。您还可以为存档使用自定义slug。

register_post_type( \'visningshus\',
    array(
        [...]
        \'has_archive\' => \'custom-slug\', 
        [...]
    )
);
如果您同时需要页面和归档文件,最好的方法是将归档文件放在不同的自定义段塞中。

SO网友:molokom

我没有解决冲突就解决了它。创建一个带有slug visningshus的页面,并在其中写入任何您想要的内容。请注意此页的ID。

创建并自定义存档自定义帖子类型。php模板(很可能只使用一个页面模板),但将循环部分替换为

$recent = new WP_Query("page_id=your-page-id");  
while($recent->have_posts()) : $recent->the_post();
    the_content();
endwhile;
那你什么时候去http://my-site.com/visningshus 您将在正确的url处看到该页面管理的内容。

让我知道它是有效的。

SO网友:Vitali Protosovitski

不允许投票,但+对于Carls解决方案,register\\u post\\u type应具有

\'has_archive\' => false
简单。但是,当您面临分页问题时,请查看

add_rewrite_rule

SO网友:Adrian Sticea

对我来说,解决这个问题的方法是将归档设置为false,但在设置自定义帖子类型时,也将层次设置为false!

SO网友:jmarceli

这里有一个通用的解决方案,可以将分页优先于任何自定义帖子类型slug的自定义帖子类型内容。

// prioritize pagination over displaying custom post type content
add_action(\'init\', function() {
  add_rewrite_rule(
    \'(.?.+?)/page/?([0-9]{1,})/?$\',
    \'index.php?pagename=$matches[1]&paged=$matches[2]\',
    \'top\'
  );
});
除了添加此代码段之外,您还应该确保您的自定义帖子类型archive = false

最后,但并非最不重要的一点是转到永久链接设置页面Settings > Permalinks (/wp/wp admin/options permalink.php)并保存当前设置以刷新页面上的链接结构。

结束

相关推荐

Redirect loop in /wp-admin/

今天,我管理的一个网站管理员无法访问。我刚刚在服务器上更新了apache,以启用mod\\u deflate,并将PHP从5.3升级到5.4。因为每次我尝试访问/wp admin/I时都会收到重定向循环错误。我尝试了所有常见的嫌疑犯,即:清除了Cookie和缓存,尝试了不同的浏览器,禁用了主题,删除了禁用的Cookie。htaccess检查了wp\\U选项中的site\\u url等,但运气不佳。我可以访问wp登录。php很好,但不是/wp管理员/任何帮助都将不胜感激,因为我完全被难住了。