Support » Themes and Templates » Implementing AMP without AMP Plugin

  • Has anyone implemented AMP without using the AMP plugin? I can do most of what’s involved except redirecting.

    In short, I’d like to redirect to a different template if the permalink has “/amp/” appended to it.

    For example

    website.com/some-post-name/ would go to single.php

    and I’d like

    website.com/some-post-name/amp/ to go to single-amp.php

    It’s probably easier than I’m making it. Any tips?

Viewing 13 replies - 1 through 13 (of 13 total)
  • Were you able to do it? I’m trying to achieve the same thing, but couldn’t any other topic except this one.

    Yea, I ended up just rolling my own. I created AMP templates and redirected to them with this code.

    This code will redirect to the amp-single.php template when you append /amp/ to a post URL.

    // ****************************************************************************************************	
    // AMP support
    
    	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';
    
    			} 
    			
    		}
    
    		return $template;
    	}
    	

    Thank you, crishaz! After resetting the permalinks, this code works like a charm.

    Cool glad it helped. Yea, I was surprised that I hadn’t seen this question answered in other places.

    FYI, after a few months, I haven’t really seen any traffic from AMP since implementing.

    Hey Crishaz! This is a great solution and I hope I can get it to work for what I need as well. Which file do I add/modify this code to? And will this work for only posts or will this work on pages as well?

    This is for your functions.php page.

    To apply to pages, just add a conditional for is_page() after the is_single() check.

    Exactly, but if you want to include pages, be sure to change the rewrite endpoint as well and flush your permalinks once more.

    add_rewrite_endpoint(AMP_QUERY_VAR, EP_PERMALINK | EP_PAGES);

    Thanks so much for your work, Crishaz.

    It’s working for all pages and posts but it is not working for front page any body help me ..
    e.g HTML version www.example.com and AMP version www.example.com/amp

    How to include amp template for the front page?

    Thanks so much for your work, Crishaz.

    Did you try checking if it’s a front page in the conditional statement? Try throwing that in as an else after is_single

    https://codex.wordpress.org/Function_Reference/is_front_page

    Thanks, Crishaz It’s working in else after is_single() condition.

    Thanks @crishaz for your work!
    This works perfectly for me as far as using the correct template is concerned.

    However, on my front page, the correct template is displayed, but the front page’s content is not pulled through.

    Any thoughts as to why this might be?

    @jordannorris If you already included EP_ROOT and aren’t getting error 404, I think the problem is just about the loop.

    • This reply was modified 2 years, 11 months ago by ahctun.

    @ahctun thanks for your reply, I have included EP_ROOT, and the endpoint is working correctly – the page is displayed using the amp template, so no 404.

    I’m not using the loop, so that won’t be it. I should be more specific about the problem.

    The header and footer content is loaded using wp_nav_menu(), dynamic_sidebar() etc. – these are working as they should. However, page-specific functions are not pulling content through.

    For example, I’m using the ACF repeater field, which checks for content using if ( have_rows('field-name') )

    On the front page, this condition is true, and the content is outputted, however when the front page is visited with /amp/ appended to the URL, this conditional is false and the content is not outputted.

    ** EDIT **
    After looking at the Advanced Custom Fields documentation, I realised that specifying the post id in the conditional I mentioned solved the issue.

    • This reply was modified 2 years, 11 months ago by jordannorris.
    • This reply was modified 2 years, 11 months ago by jordannorris.
Viewing 13 replies - 1 through 13 (of 13 total)
  • The topic ‘Implementing AMP without AMP Plugin’ is closed to new replies.