Create index.php for original theme
This is one of the articles about project “Create Original Theme in WordPress”.
GOAL
To create index.php
Environment
WordPress 5.5.1
XAMPP 7.4.10
index.php
<?php
/**
*This is main file for "techblog" theme
*@package WordPress
*@subpackage Techblog
*@since Techblog 1.0
*/
get_header(); ?>
<div class="container">
<main id="main" class="site-main">
<div class= "main-content">
<h1>Recent Posts</h1>
<?php
$lastposts = get_posts( array(
'posts_per_page' => 3
) );
if ( $lastposts ) {
foreach ( $lastposts as $post ) : setup_postdata( $post ); ?>
<div class="post-item recent-post">
<h2 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="post-info">
<span class="post-date"><?php the_date();?></span>
<?php
$post_categories = get_the_category();
if ( $post_categories ) {
foreach( $post_categories as $category ): ?>
<span class= "post-categories"><a class="category" href= "<?php echo get_category_link($category->term_id) ?>" >
<?php echo $category->cat_name ?>
</a></span>
<?php endforeach; ?>
<?php }; ?>
</div>
<?php the_excerpt(); ?>
</div>
<?php endforeach;
wp_reset_postdata();
}?>
<h1>Categories</h1>
<?php
$categories = get_categories();
if ( $categories ) {
foreach( $categories as $category ): ?>
<a class="index category" href= "<?php echo get_category_link($category->term_id) ?>" >
<?php echo $category->cat_name ?>
</a>
<?php endforeach; ?>
<?php }; ?>
</div>
</main>
<?php
get_sidebar(); ?>
</div>
<?php
get_footer(); ?>Functions
get posts
$lastposts = get_posts( array('posts_per_page' => 3) );loop the posts
if ( $lastposts ) {
foreach ( $lastposts as $post ) : setup_postdata( $post ); ?>
HTML is here
<?php endforeach; ?>This is equal to the following.
if ( $lastposts ) {
foreach ( $lastposts as $post ) {
setup_postdata( $post );
// Do something here
}
}get the url of each post that is “root/<year>/<month>/<day>/<title>/” by default.
the_title(); // works in the loop
get the title of each post
the_date(); //works in the loop
get the date when the post is posted
the_date(); //works in the loop
get the categories of current post
$post_categories = get_the_category();
loop the categories
if ( $post_categories ) {
foreach( $post_categories as $category ): ?>
HTML is here
<?php endforeach; ?>
<?php }; ?>This is equal to the following.
if ( $post_categories ) {
foreach( $post_categories as $category ){
HTML is here
}
}get the url of the category that is “root/category/<category name>/” by default
get_category_link($category->term_id)
get the category name from $category
$category->cat_name
get the excerpt of the post
the_excerpt();
How to change the length of the excerpt
Add filter in the functions.php. If you’d like to know about add_filter(), please check the article “What is Hook in WordPress?“.
function twpp_change_excerpt_length( $length ) {
return 20;
}
add_filter( 'excerpt_length', 'twpp_change_excerpt_length', 999 );get all categories of the site
$categories = get_categories();
Result

Change style
I customized the design of the page by editing style.css.
