自定义帖子类型URL重写?


32

我为我的投资组合项目设置了一个自定义帖子类型。主要网址位于/projects/

现在,我还将我的博客文章永久链接设置/articles/*/为永久链接结构。这意味着当我去查看投资组合项目时,URL更改为/articles/projects/project-name/

我知道必须有一种方法可以针对我的项目自定义帖子类型重写永久链接。但是我不熟悉声明URL slug的语法-希望得到我的任何帮助!

Answers:


42

注册自定义帖子类型时,必须指定重写规则不应以现有的URL结构开头。

简而言之,这意味着您register_post_type通话中的这一行:

'rewrite' => array('slug' => 'projects'),

应该变成这样:

'rewrite' => array('slug' => 'projects','with_front' => false),

有关更多信息,请rewriteCodex条目上查看参数register_post_type

编辑:只需确保在更新代码后,通过访问“设置”>“永久链接”即可刷新重写规则。否则,您仍然会看到旧的链接。


辉煌的谢谢!为了澄清,我需要执行刷新规则的所有步骤是转到“设置”->“永久链接”页面,然后单击“保存更改”,对吗?
2012年

4
您甚至不需要保存更改。只需打开“永久链接”设置页就足够了(也就是说,如果您的.htaccess文件是可写的。否则,请按保存更改并手动复制它在您的.htaccess中返回的代码)
0x61696f 2012年

2
这似乎对我不起作用。我的项目职位仍将发布example.com/projects/title-of-post。我也访问了永久链接页面。是什么原因造成的?我的中没有任何重写规则htaccess
Desi 2015年

哇,谢谢,那是缺少的部分!访问永久链接页面无效,但仅保存当前的永久链接设置有效:)
Alexander Taubenkorb

我一直在更改内容,而没有刷新重写规则。谢谢你的提示!
Tan-007

15

我确实在3天前遇到了这个问题,然后在wp.​​tutsplus.com偶然发现了一系列问题。我换出了自己的代码以更好地适应您的问题,但这是在完成本系列文章之后的结果。另外,请记住,这未经测试。

// sets custom post type
function my_custom_post_type() {
    register_post_type('Projects', array(   
       'label' => 'Projects','description' => '',
       'public' => true,
       'show_ui' => true,
       'show_in_menu' => true,
       'capability_type' => 'post',
       'hierarchical' => false,
       'publicly_queryable' => true,
       'rewrite' => false,
       'query_var' => true,
       'has_archive' => true,
       'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes'),
       'taxonomies' => array('category','post_tag'),
       // there are a lot more available arguments, but the above is plenty for now
    ));
}

add_action('init', 'my_custom_post_type');

// rewrites custom post type name
global $wp_rewrite;
$projects_structure = '/projects/%year%/%monthnum%/%day%/%projects%/';
$wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project=");
$wp_rewrite->add_permastruct('projects', $projects_structure, false);

从理论上讲,您可以在存储在 $projects_structure变量中内容,而这正是我最终使用的内容。

祝您好运,并且一如既往-请务必回来,并告诉我们如何解决!:)


1
通常认为仅由链接组成的答案无济于事,因为这些资源将来可能(并且可能会)不再存在。总结内容。
chrisguitarguy 2012年

公平地说,我将进行适当的修订。
cmegown 2012年

11
在那里,我的答案现在包含与在生产环境中成功重写自定义帖子类型URL的工作代码相似的代码。希望它能对您有所帮助!
cmegown 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.