有什么方法可以为wp post制作多个slug

问题描述 投票:0回答:1

我想创建一个自定义帖子类型并根据 URL 结构使用不同的模板显示它。具体来说,我想根据URL中的模板来显示不同的页面,例如:

  • example.com/company/template_name/?company_name=bla_invest
  • example.com/company/template_name/bla_invest

我有三个不同的模板,想根据URL中的template_name显示对应的模板。公司名称将动态更改以加载相关公司数据,但我不想为每个模板创建三个单独的帖子。

我尝试使用分类类别来实现此目的,但它没有按预期工作。有没有办法处理这个问题,而无需为每个模板创建三个不同的帖子?

php wordpress custom-post-type permalinks slug
1个回答
0
投票

是的,可以使用重写规则(已测试):

// Register rewrite tag and rule for `company` post type.
add_action( 'init', static function () {
    add_rewrite_tag( '%company_template%', '([^&]+)', 'company_template=' );
    add_rewrite_rule( '^company/([^/]+)/([^/]+)(?:/([0-9]+))?/?$', 'index.php?company=$matches[2]&company_template=$matches[1]', 'top' );
} );

// Add the rewrite tag to accepted public query vars.
add_filter( 'query_vars', static function ( $vars ) {
    $vars[] = 'company_template';
    return $vars;
} );

// Change the template based on the query var.
add_filter( 'template_include', static function ( $template ) {
    if ( ! is_string( get_query_var( 'company_template', false ) ) ) {
        return $template;
    }
    
    // Change the template to use.
    
    return $template;
} );

这也保留了原始的永久链接结构 (

/company/company-name/
)。

© www.soinside.com 2019 - 2024. All rights reserved.