在某些URL上使用自定义模板

时间:2014-11-10 作者:Nacho

我正在建立一个简单的双语网站。我将Polylang用于帖子,还有一个自定义的帖子类型“Artist”为了在后端保持简单,我没有使用Polylang,只是为每个艺术家的语言使用了几个自定义字段。

当我加载站点时。com/artist/jonnycash我正在使用模板single-artist。php关于我的主题。问题是,当我加载(例如,站点)时,如何加载自定义模板。com/en/artist/johnny cash?

所以基本上,这个:

地点com/artist/jonnycash->加载单个艺术家。php(很棒)

地点com/en/artist/johnny cash->如何重定向到自定义模板?

1 个回复
SO网友:Nacho

感谢@Milo的评论,我将发布我的答案:

首先我添加了这个规则:

add_rewrite_rule(  
    "en/artist/([^/]+)/?",  
    \'index.php?pagename=post_type=artist&artist=$matches[1]&gal_template=en\',
    "top"); 
然后此筛选器:

add_filter( \'query_vars\', \'gal_query_vars\' );
function gal_query_vars( $query_vars )
{
    $query_vars[] = \'gal_template\';
    return $query_vars;
}
最后,我过滤了单个模板:

add_filter( \'single_template\', \'get_custom_post_type_template\' );
function get_custom_post_type_template($single_template) {
     global $post;

     if ($post->post_type == \'artist\') {

            $q = get_query_var(\'gal_template\');

            if ($q === \'en\') {
                $single_template = dirname( __FILE__ ) . \'/single-artist-en.php\';
            }


     }
     return $single_template;
}
然后是单曲艺术家en。php我做了:

get_template_part(\'single-artist\')
但你可以做任何你需要的事。

结束

相关推荐

multi-language WordPress site

我正在制作由WordPress支持的多语言网站。WPML 不是免费的,而且它对数据库进行了太多额外的sql查询,所以对于我的站点来说,这不是一个好的解决方案。qTranslate 将所有语言保存在一个数据库行中,以后移动到另一个多语言插件非常复杂。<?php _e( \'<!--:en-->english text<!--:--><!--:de-->german text<!--:-->\' ); ?> xLanguage 两年多没有更新