The recommended structure for the theme is the following.
We’ve made a very simple structure where we need only one folder for the theme and inside of it all the files shown above.
AMP Theme Framework Code Explained
In this article, we’ll look into the theme structure and it’s working.
- amp-theme.php
- archive.php
- footer.php
- functions.php
- header.php
- index.php
- loop.php
- page.php
- search.php
- single.php
- style.php
amp-theme.php
<?php /* Plugin Name: AMP Theme Framework Plugin URI: https://wordpress.org/plugins/accelerated-mobile-pages/ Description: This is a custom AMP theme built to show how easy it is to make custom AMP themes. Version: 1.0 Author: Mohammed Kaludi, Ahmed Kaludi Author URI: http://ampforwp.com/themes License: GPL2 AMP: AMP Framework */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) exit;
This file is for WordPress to let it know that This is a plugin and treat it as such.
archive.php
<?php amp_header() ?> <?php amp_archive_title(); ?> <?php amp_loop_template(); ?> <?php amp_footer()?>
- amp_header() is used to call for getting the post_id, template and its parts (header).
- amp_archive_title() is used to get the title of an archive.
- amp_loop_template() is used to load the loop.
- amp_footer() is used to load the footer.
footer.php
</div> <footer class="footer container"> <?php amp_non_amp_link(); ?> </footer> <?php amp_footer_core(); ?>
- amp_non_amp_link() is used to display the non-AMP version of the site content.
- amp_footer_core() is used to complete the footer part by loading the template and hook functions.
functions.php
this file is to add the support to all the components present in the AMP Theme Framework.
If you wish to add any component say “search” then you should use the following code.
add_amp_theme_support('AMP-search');
AMP-search is used to initiate the support for the search component.
following is the list of all the components.
<?php // Loading the Components //Search add_amp_theme_support('AMP-search'); //Logo add_amp_theme_support('AMP-logo'); //Social Icons add_amp_theme_support('AMP-social-icons'); //Menu add_amp_theme_support('AMP-menu'); //Call Now add_amp_theme_support('AMP-call-now'); //Sidebar add_amp_theme_support('AMP-sidebar'); // Featured Image add_amp_theme_support('AMP-featured-image'); //Author box add_amp_theme_support('AMP-author-box'); //Loop add_amp_theme_support('AMP-loop'); // Categories and Tags list add_amp_theme_support('AMP-categories-tags'); // Comments add_amp_theme_support('AMP-comments'); //Post Navigation add_amp_theme_support('AMP-post-navigation'); // Related Posts add_amp_theme_support('AMP-related-posts'); // Post Pagination add_amp_theme_support('AMP-post-pagination');
header.php
In this file, you’ll be adding the components like sidebar, search and social icons.
<?php amp_header_core() ?> <header class="header container"> <?php amp_logo(); ?> <?php amp_sidebar(['action'=>'open-button']); ?> <?php amp_call_now(); ?> <?php amp_social([ 'twitter' => 'https://www.twitter.com/marqas36', 'facebook' => 'https://www.facebook.com' ]);?> </header> <?php amp_sidebar(['action'=>'start', 'id'=>'sidebar', 'layout'=>'nodisplay', 'side'=>'right' ] ); ?> <?php amp_sidebar(['action'=>'close-button']); ?> <?php amp_menu(); ?> <?php amp_search();?> <?php amp_social(); ?> <?php amp_sidebar(['action'=>'end']); ?> <div class="content-wrapper container">
amp_header_core() is a must to add in this file which will get the core of AMP HTML
amp_logo() is used to add the logo component and similarly, the other components can be loaded such as
amp_sidebar()
amp_search()
amp_menu()
amp_social()
index.php
<?php amp_header(); ?> <?php amp_loop_template(); ?> <?php amp_footer(); ?>
here in index.php
- amp_header() is used to load the header part.
- amp_loop_template() is used to load the loop.
- amp_footer() is used to load the footer.
loop.php
this is one of the most important files for the theme which is responsible to load the content of the loop.
<?php while(amp_loop('start')): ?> <div class="loop-post"> <?php amp_loop_image(); ?> <?php amp_loop_title(); ?> <?php amp_loop_excerpt(); ?> <?php amp_loop_category(); ?> <?php amp_loop_date(); ?> </div> <?php endwhile; amp_loop('end'); ?> <?php amp_pagination(); ?>
here we check the condition while the loop is start
- while(amp_loop(‘start’)): we’ll load the following meta information about the post.
- amp_loop_image() is used to load the image (featured image/thumbnail).
- amp_loop_title() is used to get the title of the post.
- amp_loop_excerpt() is used to get the excerpt of the post if any.
- amp_loop_category() is to show the category to which this post belongs to.
- amp_loop_date() is to show the published date.
page.php
<?php amp_header(); ?> <?php amp_title(); ?> <?php amp_featured_image(); ?> <?php amp_content(); ?> <?php amp_footer(); ?>
It is used to load the AMP content for the page.
- amp_header() is used to add the header.
- amp_title() is used to get the title of the page.
- amp_featured_image() is used for displaying the featured image if available.
- amp_content() It used to load the AMP content.
- amp_footer() is used for adding the footer section.
search.php
single.php
this file is responsible for displaying the posts in AMP theme.
We can add any component we want to display in single as per our need.
<?php amp_header(); ?> <?php amp_title(); ?> <?php amp_featured_image();?> <?php amp_content(); ?> <?php amp_post_pagination();?> <?php amp_author_box(); ?> <?php amp_social(array('twitter'));?> <?php amp_categories_list();?> <?php amp_tags_list();?> <?php amp_comments();?> <?php amp_post_navigation();?> <?php amp_related_posts(); ?> <?php amp_footer()?>
- amp_header() is used to add the header part.
- amp_title() is used to get the title of the post.
- amp_featured_image() is used to add the featured image in single.
amp_content() is to load the content. - amp_post_pagination() is to get the pagination.
- amp_author_box() is used for displaying the author section.
- amp_social() is used to load the social sharing or social profile based on the component set up.
- amp_categories_list() is used to display the categories list.
- amp_tags_list() is for displaying the tags of the post.
- amp_comments() to display the comments section.
- amp_post_navigation() is to add the post navigation.
- amp_related_posts() it is used to display the related posts.
- amp_footer() it is used to load the footer section.
style.php
this file contains all the css style for the entire theme.
<?php add_action('amp_post_template_css', 'ampforwp_custom_style', 11); function ampforwp_custom_style() { global $redux_builder_amp; $get_customizer = new AMP_Post_Template( $post_id ); ?> /**** * AMP Framework Reset *****/ body{ font-family: sans-serif; font-size: 16px; line-height:1.4; } ol, ul{ list-style-position: inside } p, ol, ul, figure{ margin: 0 0 1em; padding: 0; } a, a:active, a:visited{ color:#ed1c24; text-decoration: none } a:hover, a:active, a:focus{} pre{ white-space: pre-wrap;} .hidden{ display:none } .clearfix{ clear:both } blockquote{ background: #f1f1f1; margin: 10px 0 20px 0; padding: 15px;} blockquote p:last-child {margin-bottom: 0;} .amp-wp-unknown-size img {object-fit: contain;} .amp-wp-enforced-sizes{ max-width: 100% } /* Image Alignment */ .alignright { float: right; } .alignleft { float: left; } .aligncenter { display: block; margin-left: auto; margin-right: auto; } amp-iframe { max-width: 100%; margin-bottom : 20px; } /* Captions */ .wp-caption { padding: 0; } .wp-caption-text { font-size: 12px; line-height: 1.5em; margin: 0; padding: .66em 10px .75em; text-align: center; } /* AMP Media */ amp-iframe, amp-youtube, amp-instagram, amp-vine { margin: 0 -16px 1.5em; } amp-carousel > amp-img > img { object-fit: contain; } /**** * Container *****/ .container { max-width: 600px; margin: 0 auto; } /**** * AMP Sidebar *****/ amp-sidebar { width: 250px; } /* AMP Sidebar Toggle button */ .amp-sidebar-button{ position:relative } .amp-sidebar-toggle { } .amp-sidebar-toggle span { display: block; height: 2px; margin-bottom: 5px; width: 22px; background: #000; } .amp-sidebar-toggle span:nth-child(2){ top: 7px; } .amp-sidebar-toggle span:nth-child(3){ top:14px; } /**** * AMP Navigation Menu with Dropdown Support *****/ .toggle-navigation ul{ list-style-type: none; margin: 0; padding: 0; display: inline-block; width: 100% } .toggle-navigation ul li{ font-size: 13px; border-bottom: 1px solid rgba(0, 0, 0, 0.11); padding: 11px 0px; width: 25%; float: left; text-align: center; margin-top: 6px } .toggle-navigation ul ul{ display: none } .toggle-navigation ul li a{ color: #eee; padding: 15px; } .toggle-navigation{ display: none; background: #444; } /**** * Loop *****/ .loop-wrapper .loop-img{ float: left; margin-right: 15px; } .loop-category{ list-style-type:none } .loop-category li{ display:inline; margin-right:1px; } /**** * Single *****/ /**** * Comments *****/ .comments_list ul{ margin:0; padding:0 } .comments_list ul.children{ padding-bottom:10px; margin-left: 4%; width: 96%; } .comments_list ul li p{ margin: 0; font-size: 14px; clear: both; padding-top: 5px; } .comments_list ul li .says{ margin-right: 4px; } .comments_list ul li .comment-body{ padding: 10px 0px 15px 0px; } .comments_list li li{ margin: 20px 20px 10px 20px; background: #f7f7f7; box-shadow: none; border: 1px solid #eee; } .comments_list li li li{ margin:20px 20px 10px 20px } .comment-author{ float:left } /**** * RTL Styles *****/ <?php if( is_rtl() ) {?> <?php } ?> /**** * Custom CSS *****/ <?php echo $redux_builder_amp['css_editor']; ?> <?php } ?>
That’s it for this tutorial!
We hope it helped you. If you have any feedback or questions, then please share them in the comments section below.
That’s it for this tutorial!
We hope it helped you. If you have any feedback or questions, then please share them in the comments section below.
How exactly would one be adding background images to the CSS code? Will it be ok to create an images folder in this folder and add the images therein, and give the path in the css code (style.php)?
Hi Varun Gupta,
If you want to change the background images of any section then you need to target any specific id or class and past this code in Global -> Custom CSS.
how can i get the url of this theme ?
Hi Ignacio,
Here is the URL from where you can download – https://ampforwp.com/amp-theme-framework/
I already have a theme for web version. How can i use this amp theme with other child theme? Or how can i integrate templates of amp in my current child theme?
Hi Akash,
Yes with the help of our AMP Theme Framework plugin you are design your AMP pages AMP Theme Framework plugin please install and activate it by using this plugin you can change anything in your AMP website.
Hello,
I’m new with work with AMP.
Where can i see this path?
Thank you in advanced
Hi B.K,
If you install our plugin then we have 4 designs from which you can choose from and if you don’t like them and you want to create your own design then you need to install and activate one more free plugin which you can download from here – https://ampforwp.com/amp-theme-framework/ and in that, you will see the theme structure
Can we have different page templates for our custom pages like the hierarchy WordPress supports for example single-$posttype-.php or page-$slug.php ?
Hi Muneeba,
Will you please follow this tutorial – https://ampforwp.com/tutorials/article/create-custom-template-post-type-taxonomy-amp-theme-framework/ And if you have any issues/problems after following this tutorial also then please let us know and we will personally help you.
How do I add stylesheet from my wordpress to the AMP template?
Hi Fernando Jose Torres Bermudez,
Will you please contact our technical team from here- https://ampforwp.com/support/ they will help you as soon as possible.