Why isn't template_include working with AMP correctly?

Before you ask I have looked around the similar questions to find a resolution but I couldn't find one that worked.

  • Ive tried the permalink option several times,
  • There is nothing in my htaccess file that would be causing the 404
  • There's no caching software installed
  • There are no other plugins that im using for redirection or amp
  • The is_single() works perfectly fine but the is_page() does not, i've also tried is_front_page(), is_category(), is_home(), is_page('specific page') but again dont seem to work.
  • body_class() is included in the body tag.

So I'm really not sure why it isnt working, see code.

define( 'AMP_QUERY_VAR', apply_filters( 'amp_query_var', 'amp' ) );
add_rewrite_endpoint( AMP_QUERY_VAR, EP_PERMALINK );
add_filter( 'template_include', 'amp_page_template', 99 );
function amp_page_template( $template ) {

if( get_query_var( AMP_QUERY_VAR, false ) !== false ) {


    if ( is_single() ) {

        $template = get_template_directory() .  '/amp-single.php';

    } 

    if( is_page() ) {

        $template = get_template_directory() .  '/amp-page.php';

    }

}

return $template;
}

Any answers would be greatly appreciated, cheers :)

Topic template-include Wordpress

Category Web


Your endpoint is only applied to posts, add EP_PAGES to generate rules for page post type-

add_rewrite_endpoint( 'amp', EP_PERMALINK | EP_PAGES );

That should also be within a function hooked to init.

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.