是否可以更改自定义帖子类型的URL以隐藏帖子类型slug?

时间:2012-01-11 作者:Tom

我想将/{自定义帖子类型}/{帖子名称}转换为/{帖子名称},这可能吗?

如果无法做到这一点,我是否可以更改页面或帖子中的标签/术语,以便将其称为“客户”或“项目”等?

4 个回复
SO网友:RagnaRock

您需要使用选项\'rewrite\' 在自定义post类型注册中。

E、 g。\'rewrite\' => array(\'slug\' => \'products\'),

codex

当您为URL命名名称空间,但仍要使用“干净”的URL结构时,需要添加“rewrite元素。例如,假设上面的“ACME Widgets”示例:

add_action( \'init\', \'create_post_type\' );
function create_post_type() {
  register_post_type( \'acme_product\',
      array(
          \'labels\' => array(
              \'name\' => __( \'Products\' ),
              \'singular_name\' => __( \'Product\' )
          ),
          \'public\' => true,
          \'has_archive\' => true,
          \'rewrite\' => array(\'slug\' => \'products\')
      )
  );
}
上述操作将生成一个类似http:/示例的URL。com/products/%product\\U name%(请参见上文对%product\\U name%的描述。)请注意,我们在这里使用了复数形式,这是一些人喜欢的格式,因为它意味着嵌入产品列表的页面有一个更符合逻辑的URL,即http:/示例。com/产品/。

另请注意,在此处使用“products”这样的通用名称可能会与使用相同名称的其他插件或主题发生冲突,但大多数人不喜欢使用更长、更模糊的URL,如http:/示例。com/acme\\u products/foobrozinator和解决两个插件之间的URL冲突更容易,因为URL结构不会以存储自定义post类型名称的方式持久存储在数据库中的每个post记录中。

SO网友:Jared Chmielecki

\'rewrite\' => array(\'slug\' => \'/\', \'with_front\' => false)
这将为您获得正确格式的url,但它将为404,除非您在主题中处理它。

SO网友:Keegan Berry

我刚刚为自定义帖子类型更改了一个slug(在本例中,我将其从"best-practices""bestpractices"). 我复制了一些带有空白段塞的代码,如下所示:

\'rewrite\' => array(\'slug\' => \'\'),
由于最初保留为空,Wordpress只使用自定义帖子类型的名称("best-practices") 就像鼻涕虫一样。我将代码行更改为

\'rewrite\' => array(\'slug\' => \'bestpractices\'),
我只想在这里指出,如果要更改预先存在的自定义帖子类型上的slug,则需要重置永久链接才能使更改生效。

SO网友:Subhankar Adhikary

是的,我们可以换鼻涕虫。请按照以下步骤操作:

步骤1:从选项“重写”更改段塞名称。(位于主题函数(Functions.php))

\'重写\'=>数组(\'slug\'=>\'产品\')

步骤2:重置永久链接。否则,将给出404错误。1> 转到wp仪表板。2> 设置-->永久链接

在“常用设置”部分下,首先将其更改为“普通”并保存。之后,再次将设置更改为首选格式。

结束

相关推荐