问题描述

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

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

我知道只有我的项目自定义帖子类型,才能重写永久链接。但是我不熟悉声明 URL 的语法 – 感谢任何帮助我可以得到!

最佳解决方案

当您注册自定义帖子类型时,必须指定重写规则不应该添加到现有的 URL 结构中。

简而言之,这意味着您在 register_post_type 中的这一行调用:

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

应该变成这样:

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

有关更多信息,请查看 register_post_type 上的 codex 条目中的 rewrite 参数

编辑:只需确保更新代码后,通过访问设置> 刷新重写规则。固定链接。否则你仍然会看到旧的链接。

次佳解决方案

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 变量中的 URL 中交换任何您想要的内容,我最终使用的是什么。

祝你好运,一如既往,一定要回来,让我们知道如何运作! 🙂

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。