Wordpress:使用带有重写端点的查询var包含页面的新模板

时间:2017-08-09 15:05:50

标签: php wordpress

我正在尝试在页面末尾追加查询var时加载新的页面模板: 原始网址:example.com/testpage/ 变量添加到最后:example.com/testpage/amp

然后它会加载一个自定义的PHP模板。 这似乎是一个直接的操作,但我无法让它工作。 url在末尾加载/ amp变量,但模板不加载。如果我删除条件" get_query_var(' amp')"那么它加载模板没问题。我错过了什么?谢谢:))

这是我的工作代码:

add_filter( 'query_vars', 'register_query_var' ); 
function register_query_var( $vars ) {
$vars[] = 'amp';
    return $vars;
}
add_rewrite_endpoint( 'amp', EP_PAGES );

add_filter( 'template_include', 'use_amp_template', 99 );

function use_amp_template( $template ) {
global $wp_query;
 if ( get_query_var( 'amp' ) && is_page() ) {
    $new_template = locate_template( array( 'amptemplate.php' ) );
    if ( '' != $new_template ) {
            return $new_template;
    }
    }

    return $template;
}

1 个答案:

答案 0 :(得分:0)

我自己找到了一个很好的解决方案。这是代码,如果它可以帮助任何人。 在页面或帖子后添加“放大器”将为该页面的放大器版本加载不同的模板。 example.com/samplepage/amp 要么 example.com/samplepost/amp

    add_filter( 'query_vars', 'register_query_var' ); 
    function register_query_var( $vars ) {
    $vars[] = 'amp';
        return $vars;
}
add_rewrite_endpoint( 'amp', EP_PAGES | EP_PERMALINK );


add_filter( 'template_include', 'use_amp_template', 99 );

function use_amp_template( $template ) {
global $wp_query;

if(isset( $wp_query->query['amp'] ) && is_page()){

    $new_template = locate_template( array( 'amppagetemplate.php' ) );
    if ( '' != $new_template ) {
        return $new_template;
    }
}

if(isset( $wp_query->query['amp'] ) && is_single()){

    $new_template = locate_template( array( 'ampposttemplate.php' ) );
    if ( '' != $new_template ) {
        return $new_template;
    }
}

return $template;
}