在WordPress中重写自定义模板的规则不起作用

时间:2017-02-21 10:17:46

标签: php wordpress .htaccess function

我正在尝试制作一个自定义网址,例如" mysite.com/artist/bruno-mars"使用自定义模板" artist.php",它位于主题文件夹中。

这是" artist.php"模板代码例如

<?php
get_header();
//my custom code goes here //
get_footer();
?>

现在在主题functions.php的头部,我把代码

/**
 * Custom rewrite 
 */

add_action( 'init', 'ic_rewrite_rule' );
function ic_rewrite_rule() {
    add_rewrite_rule( 'artist/([^&]+)', 'index.php?artist=$matches[1]', 'top' );
}

/**
 * Custom query vars 
 */

add_filter( 'query_vars', 'ic_register_query_var' );
function ic_register_query_var( $vars ) {
    $vars[] = 'artist';
    return $vars;
}

/**
 * Custom page template 
 */

add_action( 'template_redirect', 'ic_url_rewrite_templates' );
function ic_url_rewrite_templates() {
    if ( get_query_var( 'artist' ) )
        add_filter( 'template_include', function() { return get_template_directory() . '/artist.php'; });
}

但这不起作用。它显示404错误。任何人都可以帮助我。

以下是一个示例 - Custom rewrite rules in Wordpress但不确定,如果可行的话。

更新

我明白了。这是主题文件夹中functions.php的代码。

add_filter('query_vars', 'add_artistname_var', 0, 1);
function add_artistname_var($vars){
    $vars[] = 'artistname';
    return $vars;
}
add_rewrite_rule('^artist/([^/]+)/?$','index.php?pagename=artist&artistname=$matches[1]','top');

0 个答案:

没有答案