WordPress 101: WordPress for beginner developers

WordPress 101: Introduction

Working with WordPress can be awesome and painful at the same time, especially when you have to dial with a lot of different parts of this CMS, or being forced to create some functions by yourself.


Internet is full of tutorials and guides, good and bad, to help you out with pretty much everything, but the major problem is that most of this tutorials are focused on single tasks, with specific goals on how to create this or that, following a preset logic by the author that could not fit the needs of a fresh, confused developer. Most of the time a developer at his first step would like to learn how to actually create something from scratch, or how to properly manage the most common hooks and functions from WordPress, focusing more on the logic and learning the basic WordPress codex.

WordPress can be a total #@!? or a loyal wife

If you’re looking for something fast on how to create your wonderful template or your stunning plugin, this is not the place for you. This is gonna be a long and sometimes painful process.

In this series of tutorials I’m gonna touch the most common aspects that fill up the life of a WordPress Developer, from the editing of the comment text, to the development of custom templates and plugins.

Here’s the list of tutorials:

Don’t take everything for granted

Something that I constantly remind to myself is to not take everything for granted. WordPress is a constantly evolving project, with the release of a major update once every 6 months circa, so always remember that something written today could be already outdated tomorrow. Always check the source code and avoid to just brutally copy/paste a piece of code that you find useful, even in this guide. Always check, double check and test everything like a maniac.

All the examples included in this series of tutorials refer to the version 4.0+

What you think guys? Is something missing from the list above? Is there some topic or aspect of WordPress would you like to talk about?
If you have critics or suggestions please let me know with a comment, and if you like this guide please give me a virtual high five with a click on the share button.


Happy developing!

  • Scott Splettstoeszer

    Loved both your WordPress Live Development Session.
    How do we find out when you are going to have a new WordPress Live Development Session for us to join in on?

    • Most likely I’m gonna have the next Live Development Session on July Saturday 11th.
      Finger crossed 😀

  • Max Irwingstone

    //Your Tutorial is Awsome.

    //I have some troubles with wordpress functions:

    <!– comm

    max_num_pages > 1 ) : ?>


    //How to properly use it?
    //Probably have several queries in theme – something is broken.

    • Hi Max and thanks for you comment.

      Looking at the code snippet you shared doesn’t really help me. I don’t know what’s the structure of your entire page so I can’t check if there’s an error somewhere.
      As a generic advice, I suggest you to check if you manipulated the wp_query and you need to reset it before checking the amount of pages.

      • Max Irwingstone

        WordPress Loop (main loop) was broken by my code. I fixed it thanks to Your tutorials and wordpress codex.

  • Martin Bouwman

    I followed your WordPress for beginner developers tutorial. Took me 9 days for all 12 +(2) lessons (my family missed me a few evenings 😉 ).
    Hope you will also give a bit more attention to how connect your code to the wp-admin menu.
    I’m creating a theme for a friend of mine and I ‘don’t want to change the code any time she wants to have something changed in the layout.

    • Hi Martin and thank you for your comment.
      I’m super happy you did a full immersion of my tutorials, that is great, not for your family maybe :D.
      Anyway, I will definitely extend the series to touch some more advanced functions to create custom options in the admin panel, plugins, widgets and so on.
      I will publish the next video at the end of the next week and I already have a bunch of surprise for mid July.
      Stay tuned!

  • Ms. Baxstar

    I followed your steps up to the second video where javascript was introduced. When I refreshed my page, I got the cheatin’ uh? error. How do I fix that?

    • Alessandro

      Hi, thanks for your comment. What do you mean with the “cheatin’ uh? Error”? Can you be more specific?
      Also if your code doesn’t work I suggest you to take a look at my source code l, accessible for free on GitHub, you find the link in the video description.

  • akshay

    your tutorial are awesome

  • Pingback: How to build a Premium Theme for WordPress()

  • Jozef Sedlak

    Hi Alec, I have some issue with the code. Doing the archive tutorial part and as soon as I change the config to true so we can see the syntax error, I see this:

    “Strict Standards: Declaration of Walker_Nav_Primary::start_lvl() should be compatible with Walker_Nav_Menu::start_lvl(&$output, $depth = 0, $args = Array) in htdocs/wordpress – awesome/wp-content/themes/awesometheme/inc/walker.php on line 86”

    Everything works fine, exactly like in your video, I even copied your code just to make sure I did not do any typo, but still get the error..
    Would you have any idea what that could be?

    thank you for you help.

  • Jozef Sedlak

    Alec, I see you get the same error (warning) in the video. All good now, the problem solved.

    btw, the tutorials are amazing, hope you will never loose the patient to teach and share your knowledge.

    thank you.

    • I will never stop!
      Thank you for following and I hope you’re enjoy the Premium Theme series.

  • I need The next lesson sir 😀

    • Hi, this series is complete, I started a new one focused on more advanced stuff.

      Check it out: https://www.youtube.com/playlist?list=PLriKzYyLb28kpEnFFi9_vJWPf5-_7d3rX

      • is that the next session?

      • i’m waiting here , the answer of my error

        • Thank you for your passion, but constantly commenting and asking for help is not gonna make me go faster. If I don’t answer is because or I’m sleeping or I’m working, please respect my time and wait.
          What’s your error about?

          • ohh i’m sorry,its bcs your tutorial is really amazing , so ican’t wait to go to the next part,

            i cant bring out from in
            i following the tutorial, and getting error
            and trying to download your file in github, and copy all frile from lesson_7a, and getting error
            it the same error, is still under of
            i just try to use “inspect element” and manually remove and , and it work,
            but it cant save hahhaha

            one more, i’m sorry again

          • a element (list) has to be inside the container. Basic HTML structure that needs to be followed.
            I will review your code later and I will let you know where is your mistake and how to fix it.

  • what software u use to help writing code?

    • I use Coda by Panic with a plugin installed for WordPress autocomplete and suggestion.
      Thank you for watching!

  • MrRifvanpaf

    I come from Indonesia, Thank you very much… for your video tutorial.. its very nice and good for me, but i hope you can support me… because i want to make theme wordpress… thanks… thanks.. thanks…

    • Thanks for following, you will find a lot of help and useful tutorials on my Channel.
      Happy Coding!

  • Rahuman Bin Hussain

    Just finished the entire course, Thank you very much for your awesome tutorial. It’s really worth.

    • Alessandro

      I’m really happy to hear that, thank you so much for following.
      If you want to learn more and do some more advanced stuff, I’m currently releasing a Premium Development Series about WordPress.
      Happy Coding

  • Muhammad Haris

    Hi Alessandro your rocks, I love the way you teach +1 (Y).

    My question is how to enable comments in custom post type? I have added COMMENTS IN SUPPORT but it still showing “Comments are closed.” can you please help.

    here is the code:

    function awesome_custom_post_type (){

    $labels = array(
    ‘name’ => ‘Reviews’,
    ‘singular_name’ => ‘Reviews’,
    ‘add_new’ => ‘Add Review’,
    ‘all_items’ => ‘All Reviews’,
    ‘add_new_item’ => ‘Add Review’,
    ‘edit_item’ => ‘Edit Review’,
    ‘new_item’ => ‘New Review’,
    ‘view_item’ => ‘View Reviews’,
    ‘search_item’ => ‘Search Reviews’,
    ‘not_found’ => ‘No Reviews found’,
    ‘not_found_in_trash’ => ‘No Reviews found in trash’,
    ‘parent_item_colon’ => ‘Parent Item’
    $args = array(
    ‘labels’ => $labels,
    ‘public’ => true,
    ‘has_archive’ => true,
    ‘publicly_queryable’ => true,
    ‘query_var’ => true,
    ‘rewrite’ => true,
    ‘capability_type’ => ‘post’,
    ‘hierarchical’ => false,
    ‘supports’ => array(
    ‘taxonomies’ => array(‘category’, ‘post_tag’),
    ‘menu_position’ => 5,
    ‘menu_icon’ => ‘dashicons-book-alt’,
    ‘exclude_from_search’ => false

  • Darz K.

    Hello Allessandro, I hope you are well and enjoying your day ;0}

    Just a question if that’z okay?
    I’m having a little trouble with part 6-(add theme support/features-wp101)..

    I got the custom header and post thumbnails working ok, just having a problem with the custom background..

    The option shows up in the appearance menu, and is editable in wp-admin, it won’t update though when saved..
    It shows up in the view source of the site:

    body.custom-background { background-color: #5815d6; background-image: url(‘http://localhost/wordpress/wp-content/uploads/2016/05/header-tesht.jpg’); background-repeat: no-repeat; background-position: top center; background-attachment: scroll; }

    (I’m developing on localhost and all seems well with the database)
    .. I’ve gone over all the code, and it seems in order.. is there a known simple issue with this?

    Herez my functions.php code:


    function first_Theme_script_enqueue() {

    wp_enqueue_style('customstyle', get_template_directory_uri() . 'css/firstTheme.css', array(), '1.0.0', 'all');

    wp_enqueue_script( 'customjs', get_template_directory_uri() . 'js/firstTheme.js',array(), '1.0.0', true);


    add_action( 'wp_enqueue_scripts', 'first_Theme_script_enqueue');

    function first_Theme_setup() {


    register_nav_menu('primary', 'Primary Header Navigation');

    register_nav_menu('secondary', 'Footer Navigation');


    add_action('init', 'first_Theme_setup');




    Thanks for your time Allessandro!


    • Hi, thank you so much for following.
      If you access the inspector of your browser can you see your custom CSS code applied to the body?
      If the custom CSS for the background is not applied to the body it means you have some code overwriting that class.
      Also you didn’t attach the functions.php code.

      • Darz K.

        Thanks for the reply Alex.. I got it to work..
        Apologies for the unfinished previous comment I posted, I had a full comment written and checked, maybe I deleted half of it.. anywayz, I left out this code in the header.php:

        <body >

        ..so itz working now after putting that in.. I had previously left it out as I didn’t think it would stop anything from working.. the classes now show up when I view the source code in the browser, although I’m not 100% sure why.. I thought this just appended these new classes to the body tag? Would there always have to be a php function in the body tag?

        Thanks again Alex


  • Darz K.

    Hello Alex, I hope you are well today..
    I’m having unexpected results with part 14 of the course, the walker class part 1 –
    When I added
    ‘walker’ => new Walker_Nav_Primary()
    to the header.php file, the theme was working but the nav menu disappeared.. in the inspector, the ‘s are not printing..
    ..could you help me out with this please?
    ..Loving the course by the way, learning so much very quickly ;o,

  • Hi Alessandro ,
    I have a static home page with 3 blog posts and want the ability to display a sticky post .
    How do I do that? Can you explain it super simple ?

  • Pingback: WordPress 101: Create a Theme from Scratch – Iblaze Hosting()

  • Daniyyal

    Hi Alex. Great WordPress 101 Tutorials. I am following your tutorial series but after the 18th tutorial and onward a problem occurred that is when I go to the posts and then click older posts link it doesn’t work there, but if I add a new page to the navbar and then first the post page is set and when i click on older post there it responds and redirect to the page 2. So please have a look. Thanks

  • Nikhil Saxena

    Hello Alessandro… First of all thank you so much for your videos they seems to be very helpful, brother I am a beginner in wordpress and I am having a problem in including my stylesheet. My functions.php is
    function awesome_script_enqueue(){
    wp_enqueue_style('customstyle',get_template_directory_URI(). 'css/awesome.css', array(), '4.6.1', 'all');
    add_action('wp_enqueue_scripts', 'awesome_script_enqueue');

    can you please tell me whats the issue with this code or I will be really gratefull if you can sen me the codes of your 2nd videos. Thanks in advance

    • I think your code was stripped out from this comment.
      Thank you so much for following my videos, if you have issues I suggest you to download my source code from GitHub and compare it with yours, just to be sure you don’t have any typos.

  • HR Mohamed Sabry

    how to add some items on admin area to be on a header menu please and let it appear for some roles. just in case i have instructors and i want them to create courses for example.. can you help me??

  • HR Mohamed Sabry

    i use a pc not apple , what is the software can i use as editor for writing codes in it (php, css, js) .. please help

    • You can use Sublime Text, Atom, Visual Studio Code, or PHPStorm to mention a few. There are many many code editors and IDE you can use.
      Happy Coding!

  • aprivadacult

    thank you for all that videos, help me so much… but you have some videos focused only in css building? My css is terrible . Thanks man

    • I have a playlist about SASS, you should follow that one, it’ll help you a lot!

  • Amgad Mohamadadel

    very good and very wonderful professional man thanks for this wonderful titular

    • Thank you so much 😀

      • Amgad Mohamadadel

        i have who thank you for this great lessons them will help me in my career

  • John Clinton Mwangi

    Great job bro

  • Ivan Paunović

    my localhost WP doesn’t recognize new theme when i make a new folder in themes. what should i do? tnx

  • Prince Ogene Razicoded

    i really do love is website

  • Pingback: WordPress 101: Create a Theme from Scratch | Teacher Dougles Chan()

  • Pingback: WordPress 101: Create a Theme from Scratch – WordPress Tutorials()

  • Pingback: WordPress 101 – Part 8: How to create Sidebar and Widgets areas – WordPress Tutorials()

  • Beechwood1

    Al, hey i completed the Live Q&A #2, and i figured out another simple way to limit the 3 blogs to 3 unique blogs. just use a small array of post_Ids. This works when i HARDCODE a post_id but i;m not able to load the array in the $exclude[]= the_ID(); statement. Hey, I luv these tutorials, Thanks.

    &exclude = array();
    post__not_in => &exclude,
    $count ++;
    $exclude[] = the_ID(); //ERRORs $exclude[]= 76; // Works, NO Error

    Can ya give me a fix ? and a var_dump example cause ??? i get it to work sometimes n sometimes not ???

  • Aiden Succor

    Hi Alessandro, I really love your video tutorials in wordpress. I’ts simple but very useful.

    I just have a question. why my debug text shows that I have this error?

    “[23-Oct-2017 13:11:48 UTC] PHP Warning: Declaration of Walker_Nav_Primary::start_lvl(&$output, $depth) should be compatible with Walker_Nav_Menu::start_lvl(&$output, $depth = 0, $args = Array) in F:xampphtdocspracticewp-contentthemesFirstThemeincwalker.php on line 85”

    I just finish the “PART 15: Edit the menu with the Walker Class – Part 2” of your WordPress 101 tutorial Series. Thanks alot. you really help the beginner developer like me.

  • Pingback: WordPress Theme Development Live Session + Q&A | Aquaiver IT Solutions (Pvt) Ltd()

  • Awesome tutorial. It was fun learning with you Guy!
    Namaste from Kathmandu 😀