自定义URL的自定义模板

时间:2014-12-29 作者:yivi

我尝试注册一个URL,我想为其加载一个自定义模板(并列出我已经注册并在其他地方工作过的CPT的十到十二个项目)。

我有以下代码:

public function url_for_calendar() {
    add_rewrite_rule( \'events\', \'index.php?upcoming-events=true\', \'top\' );
}

public function upcoming_event_query_var ( $vars ) {
    $vars[]=\'upcoming-events\';
    return $vars;
}

public function template_for_calendar( $path ) {
    if ( get_query_var( \'upcoming-events\' )  ) {
        $template = get_template_directory() . \'/upcoming-events.php\';
        return $template;
    }

    return $path;
}
相应的(都发生在一个类中):

add_action ( \'init\', array( $this, \'url_for_calendar\' ) );
add_action ( \'query_vars\', array( $this, \'upcoming_event_query_var\' ) );
add_action ( \'template_redirect\', array( $this, \'template_for_calendar\' ) );
自定义URL已注册(是的,我重新保存了permalink设置),我可以在调试器中看到,我正在检查template\\u for\\u calendar,并且已注册并捕获查询变量,并且我正在template\\u for\\u calendar的末尾返回自定义模板的路径。。。但我没有看到那个模板,而是回家了。php。

我做错了什么?谢谢和问候。

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

template_redirect 是一种行动,它不期望任何回报。你要找的是template_include 我想是过滤器。

http://codex.wordpress.org/Plugin_API/Filter_Reference/template_include

结束

相关推荐

1 post, 2 templates

我想能够呈现两种不同的风格(2个模板)后。例如,假设我有post ID 133,我希望有两个url来访问它,因此它会呈现不同模板应用的位置。洛雷姆。com/render1/133。com/render2/1333,例如。。。或者可能是这样的:洛雷姆。com/post/133和lorem。com/post/133?模板=2您将如何操作?