自定义模板的自定义URL结构

时间:2019-03-22 作者:saurav.rox

我有一个自定义分类法叫做activities 和一个名为operator.所以,如果example.com/operators/bird-watching 然后我想列出所有提供观鸟服务的运营商。观鸟是活动分类学的一个术语。我为此制作了一个不同的模板。我还为此开发了一个url结构,如下所示。如果有人访问,我现在只想加载我的自定义模板example.com/operators/bird-watching

试过这个link 但没有帮助。

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\' );

1 个回复
最合适的回答,由SO网友:nmr 整理而成

在您附加的链接中,您拥有所需的一切。您应该:

添加查询变量(例如operators_actv),operators_actv),template_include 用于加载自定义模板if查询变量的操作挂钩operators_actv 已设置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;
}
别忘了刷新永久链接。点击Save 在里面Dashboars -> Settings -> Permalinks 或者从代码中使用flush_rewrite_rules() (how to recreate rewrite rules).

相关推荐

Redirection on domain name

我目前正在调试一个荷兰WP网站https://glaszetterdirect.nl问题是,我从以下位置收到了不需要的重定向:http://www.glaszetterdirect.nl 到https://glaszetterdirect.nl/wp-admin我真的不明白发生了什么事。我已经检查了以下内容:.htaccesswp-config.phpwp_options db表格(siteurl 和home 两者:https://glaszetterdirect.nl)</已选中并删除wp_old