Comments are an integral part of any WordPress site and knowing how comments are handled by WordPress gives you the power to change how comments appear and how people interact with them. In the theme unit test data, there's a post called template comments that contains 19 comments. And if you go down to the comment section, you'll see it starts off with a very long comment that has all of our HTML formatting just like our HTML formatting post. And then below we have 18 more comments that are displayed either as top level comments or as threaded replies.
Here you see we have threaded replies. In this chapter, we'll work on the comments section, we'll make the comments output the way we want, we'll style them, and we'll also work with the comments' form, which you'll find here at the bottom. But before we start, I need to reveal one more element within the comments template, and that is the comment's navigation. You see, right now, it's outputting all the comments on one page, but if you have a lot of comments, you may want to split them into separate pages so you don't have to load everything all at once. To trigger that effect, I'm going to open the dashboard in a separate tab.
Go to settings and discussion, and here you'll find an option called break comments into pages. So I'm going to set that number to 5, and then check it, and what happens now is I'll only show 5 top level comments per page. And that way even though we only have 20 comments on the page, I'll still get the comments navigation to appear. So if I now reload my post. I'll scroll to the top of my common section here. You'll see now we have navigation here saying older comments.
And when I scroll down you see we also have navigation arrow at the bottom. Just like when I worked with the single post template. When I work with the comments template, the first thing I want to do is make sure my mark up matches my over all layout. And in my single pulsed template design I also have a comment section. When I look at the comment section, I see I've changed the title. I've also removed the comments navigation from the top and then I have the actual comment and everything else looks quite normal. Now that I know what I need to change, I have to figure out how WordPress actually outputs the comments.
Comments are displayed on single posts and single pages, so I'm going to go to single.php to see how the comments are displayed. And here when I scroll down you'll see inside my loop, I have get template part content single which we worked with previously, I have My Simone post nav which we've worked with previously, and then I have the comments section. Here it tests whether or not comments are open, and we have comments and then it outputs the comments template. And this function is really smart. The comments template function first goes to the theme and checks whether or not there's a file called comments.php.
If there is a file called comments.php, then that file is used to display the comments. If not, then WordPress will fall back to its default comment output. In underscores we have a file called comments.php, so therefore I'm going to close single.php and open comments.php instead. In here we have the comments template for our theme. This template starts out with a simple test. Is password required for this poster page and if it is it just terminates immediately by returning. That way if you're going to password protected poster page you won't see the comments.
So that makes a lot of sense. Then we have the divider that sets apart the comments from the rest of the content. It starts with the ID comments. And below, we have a test that says if you have comments then output first the comments title which says one thought on or several thoughts on. Then we have the commons navigation at the top. The function WP list comments which lists out each of the comments, and you see that it's currently displayed as an ordered list, and it's displayed using the short ping function, which is a very clean markup.
And the conditional statement ends, and then we have a fallback for the situation where comments are closed. So here it just says comments are closed. Once all the comments are displayed, the comments template ends with the function called comment form which outputs the comment form. And now I can start working on my template to make it appear as I want. The first thing I want to do is change the title because right now the title says one thought on and then the name of the post. Or it says a number of thoughts on, and then the name of the post.
But I wanted to say one comment or a number of comments. So, if you look at this, you'll see this is a print up function just like what we've seen before and it's using that same markup where you have the percentage to dollar sign as and percentage one dollar sign is that are pointing to the two functions below. Here you have a comma separated list of functions. The first one, so number one, outputs the gets comments number function and the second one put the gets the title function.
And since I only want to display the words one comment or number of comments, I can simply take out the second option here. And then I'll change the wording to say one comment : or number of comments. Now that I've made my change, I'll need to go back in my template and check that it outputs properly and here you see it now says 19 comments matter. So now that works, the next thing I want to do is remove the header navigation. So, I'm going to scroll down here and simply find the top navigation and just delete all of it.
Then we have the commons list, I'm going to leave that alone for now. And then we have the bottom navigation. And here I want to change the output of the bottom navigation so that I can design it to match the post navigation but also wanted to add a couple of icons from font awesome that add arrows that point to the left and the right so it's clear that this is navigation. The first of the last process involves changing the actual output. So here you see we have two divs, div class nav previous and div class nav next, which is exactly the same as the post navigation.
So that's what separates the two, and puts them side by side. And then we have the actual output. And here, you see we have a left arrow, it says older comments and then newer comments, and a right arrow. So I'm just going to swap out these two lines of text here. So that they output the text along with the icons from font Awesome. See If you go to the code snippets, you'll find the whole nav section here. So you can just copy out the nav section. And replace the nav section here. And all I've done here, like I said, is swap out the text for different texts.
So now you see we have the standard call to the font awesome icon. FA-arrow-circle-o-left and FA-arrow-circle-o-right, inside the text. When I save this and go back to my post, you'll see we don't have comments navigation at the top. And when I scroll down, the comments navigation at the bottom has that nice font awesome arrow. The final thing I need to do is style this so that it appears the way I want. So I want to add a line at the top and a line at the bottom to fully separate the navigation out and for that, I can just add two simple rules into my style sheet.
So I'll copy these two out. Go open style.css, and here I want to search for comment navigation. So we get to the navigation section and here you see that the reason why my comments navigation isn't lining up properly is because the styles that we created previously apply to the comments navigation too. So I'm going to scroll below all this section here and paste in all my rules. Here you see the first one targets just comment navigation, adds padding and a margin around it and then adds a border on the top and a border on the bottom.
And all the second rule does, is it adds a margin to the left and right of the icon from font awesome so that the icon doesn't butt up against the text. Now I'll save style.css. Reload my post a final time and you see my navigation is now nicely separated from the rest of the content styled to match my other navigation and the icon appears. And when I go to older comments and scroll down, you see the newer comments appears too with the same icon just on the other side.
So like before, the first step in redesigning the comment section is to get the markup where you want it to be. Now that we have the markup, we can start looking at matching our content to our design using styles.
Get unlimited access to all courses for just $25/month.Become a member
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Your file was successfully uploaded.