Custom url structure for custom template

In the link you attached, you have everything you need. You should:

  • add query variable (e.g operators_actv),
  • add rewrite rule that sets this variable (operators_actv),
  • use the template_include action hook to load custom template if query variable operators_actv is set.

Code:

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/([^/]+)/?$' => '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;
}

Don’t forget to refresh permalinks. Click Save in Dashboars -> Settings -> Permalinks or do it from code with flush_rewrite_rules() (how to recreate rewrite rules).

Leave a Comment