首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义模板的自定义url结构

自定义模板的自定义url结构
EN

WordPress Development用户
提问于 2019-03-22 05:04:00
回答 1查看 786关注 0票数 1

我有一个名为活动的自定义分类法,还有一个名为操作符的自定义角色。因此,如果访问Example.com/操作员/观鸟,那么我想列出所有提供观鸟服务的运营商。观鸟是一个活动分类学术语.我为此做了一个不同的模板。我还为此开发了一个url结构,如下所示。如果有人访问Example.com/操作员/观鸟,我现在只想加载我的自定义模板

尝试过这个链接,但没有帮助。

代码语言:javascript
复制
function resources_cpt_generating_rule($wp_rewrite) {
    global $wp_rewrite;
    $rules = array();
    $terms = get_terms( array(
        'taxonomy' => 'activities',
        'hide_empty' => false,
    ) );

    $post_type = 'operator';
    foreach ($terms as $term) {
        $rules['operators/' . $term->slug . '/([^/]*)] = 'index.php?operators/'.$term->slug;            
    }
    // merge with global rules
    $wp_rewrite->rules = $rules + $wp_rewrite->rules;
}
add_action( 'generate_rewrite_rules', 'resources_cpt_generating_rule' );
EN

回答 1

WordPress Development用户

回答已采纳

发布于 2019-04-02 16:23:29

在你所附的链接中,你拥有了你所需要的一切。你应该:

  • 添加查询变量(例如operators_actv),
  • 添加设置此变量的重写规则(operators_actv),
  • 如果设置了查询变量operators_actv,则使用D9操作钩子加载自定义模板。

代码

代码语言:javascript
复制
add_filter( 'query_vars', 'se332319_custom_query_vars' );
add_filter( 'template_include', 'se332319_custom_template', 50 );
add_action( 'generate_rewrite_rules', 'se332319_resources_cpt_generating_rule' );

function se332319_resources_cpt_generating_rule( $wp_rewrite ) 
{
    $rules = [
        'operators/([^/]+)/?别忘了刷新permalinks。在Dashboars -> Settings -> Permalinks中单击保存,或者通过使用flush_rewrite_rules() (如何重新创建重写规则)的代码进行保存。 => 'index.php?operators_actv=$matches[1]&activities=$matches[1]'
    ];
    $wp_rewrite->rules = $rules + $wp_rewrite->rules;

    return $wp_rewrite;
}

function se332319_custom_query_vars( $query_vars )
{
    array_push( $query_vars, 'operators_actv' );
    return $query_vars;
}

function se332319_custom_template( $template )
{
    $qv = get_query_var('operators_actv', null);
    if ( $qv !== null && term_exists($qv, 'activites') !== null ) {

        // use "get_stylesheet_directory()" or "get_template_directory()"
        // if template file is in theme directory 
        $template =  dirname(__FILE__) . '/se332319_custom_template.php';
    }
    return $template;
}

别忘了刷新permalinks。在D13中单击保存,或者通过使用D14 (C15)的代码进行保存。

票数 1
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/332319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档