更改自定义 post 类型 url

Change custom post type url

我有一个自定义 post 按名称 'Portfolio' 键入。当我制作任何 post 时,它会生成 url 作为 /portfolio/xxx。我想将其更改为 'Products'。 Change custom post-type rewrite 我已经试过了,但应该行不通。

请参阅 URLs of Namespaced Custom Post Types Identifiers. One of the options available to you is to add a 'rewrite' argument to register_post_type() 上的文档。来自文档:

When you namespace a custom post type identifier and still want to use a clean URL structure, you need to set the rewrite argument of the register_post_type() function. For example:

add_action( 'init', 'create_posttype' );
function create_posttype() {
  register_post_type( 'acme_product',
    array(
      'labels' => array(
        'name' => __( 'Portfolio' ),
        'singular_name' => __( 'Portfolio' )
      ),
      'public' => true,
      'has_archive' => true,
      'rewrite' => array('slug' => 'products'),
    )
  );
}

然后您可能需要登录管理员并重新保存您的永久链接。

使用重写属性

$args= array(
    // other settings
    'rewrite' => array( 'slug' => 'Products' ),
);
register_post_type( 'portfolio', $args);

我假设您已经添加了自定义 post 类型,在这种情况下很容易。

当您注册一个新的 post 类型时,您可以为该 post 类型设置任何重写规则,作为 register_post_type( 'name', $args ) 函数中使用的参数的一部分。

如果您的 post 类型在前端可用并且是 public,则默认情况下 WordPress 将使用自定义 post 名称作为 slug。您可以按如下方式覆盖它:

$args = array(
    // your other arguments
    'rewrite' => array( 
        'slug' => 'products', // use this slug instead of post type name
        'with_front' => FALSE // if you have a permalink base such as /blog/ then setting this to false ensures your custom post type permalink structure will be /products/ instead of /blog/products/
    ),
);

register_post_type( 'portfolio', $args );

您可以使用的其他参数记录在 http://codex.wordpress.org/Function_Reference/register_post_type