我正在尝试制作一个自定义网址,例如" 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');