How to Add Nested Comments to Your WordPress Theme

When WordPress 2.7 came out, there were a lot of new features, most of which probably passed by under your radar. I know I missed a bunch and thankfully, I am starting to notice how much more powerful WordPress has become. I had someone request making my Magazine Basic theme function with nested comments and that started me on researching just how this new WP feature worked. It ended up being a harder nut to crack than I first thought, but crack it I did (though I probably spend way too much time on it). There are quite a few steps to making your theme work with nested comments but the easiest thing to do to start off is open up your theme’s comments.php file and replace it with this:

This post is password protected. Enter the password to view comments.

to “

comment_status) : ?>

Comments are closed.

comment_status) : ?>

You must be logged in to post a comment.

Logged in as . Log out »

ID); ?>
Now, you need to make sure that nested comments are activated on your WordPress install by going to your admin panel => Settings => Discussion and checking “Enable threaded (nested) comments” Set the level to whatever you want. I like using 2 levels. If you return to a post page on your site, you should now see reply buttons after each post. And if you click reply, you will noticed that not much happens other than “Click here to cancel reply.” appearing above your reply window. It is a little too subtle for me, so luckily there is a great Javascript hook already installed that you can call by just adding this:

to you header.php file above <?php wp_head(); ?>. Now when you click reply, the reply box appears directly below the comment you want to reply to. This is a great little feature and it makes your comments section more intuitive for your user. The only thing left, really, is styling your comments. With WordPress 2.7, one hook creates the whole comment loop, as opposed to before when you had to call the avatar, the comment text, the date and all that jazz. There is a lot happening with <?php wp_list_comments(); ?> and though some might find it awesome that you don’t have to worry about adding tons of code, others might not like the fact that you can’t edit what appears in your comments and where. There is a solution to this that I will show you below, but for now lets talk about CSS. WP 2.7 nested comments introduce some new classes and ids for you to style as you wish. It is a pretty long list though.
ol.commentlist {}
ol.commentlist li {}
ol.commentlist li.alt {}
ol.commentlist li.bypostauthor {}
ol.commentlist li.byuser {}
ol.commentlist li.comment-author-admin {}
ol.commentlist li.comment {}
ol.commentlist li.comment div.comment-author {}
ol.commentlist li.comment div.vcard {}
ol.commentlist li.comment div.vcard cite.fn {}
ol.commentlist li.comment div.vcard cite.fn a.url {}
ol.commentlist li.comment div.vcard img.avatar {}
ol.commentlist li.comment div.vcard img.avatar-32 {}
ol.commentlist li.comment div.vcard img.photo {}
ol.commentlist li.comment div.vcard span.says {}
ol.commentlist li.comment div.commentmetadata {}
ol.commentlist li.comment div.comment-meta {}
ol.commentlist li.comment div.comment-meta a {}
ol.commentlist li.comment * {} - (p, em, strong, blockquote, ul, ol, etc.)
ol.commentlist li.comment div.reply {}
ol.commentlist li.comment div.reply a {}
ol.commentlist li.comment ul.children {}
ol.commentlist li.comment ul.children li {}
ol.commentlist li.comment ul.children li.alt {}
ol.commentlist li.comment ul.children li.bypostauthor {}
ol.commentlist li.comment ul.children li.byuser {}
ol.commentlist li.comment ul.children li.comment {}
ol.commentlist li.comment ul.children li.comment-author-admin {}
ol.commentlist li.comment ul.children li.depth-2 {}
ol.commentlist li.comment ul.children li.depth-3 {}
ol.commentlist li.comment ul.children li.depth-4 {}
ol.commentlist li.comment ul.children li.depth-5 {}
ol.commentlist li.comment ul.children li.odd {}
ol.commentlist li.even {}
ol.commentlist li.odd {}
ol.commentlist li.parent {}
ol.commentlist li.pingback {}
ol.commentlist li.pingback div.comment-author {}
ol.commentlist li.pingback div.vcard {}
ol.commentlist li.pingback div.vcard cite.fn {}
ol.commentlist li.pingback div.vcard cite.fn a.url {}
ol.commentlist li.pingback div.vcard span.says {}
ol.commentlist li.pingback div.commentmetadata {}
ol.commentlist li.pingback div.comment-meta {}
ol.commentlist li.pingback div.comment-meta a {}
ol.commentlist li.pingback * {} - (p, em, strong, blockquote, ul, ol, etc.)
ol.commentlist li.pingback div.reply {}
ol.commentlist li.pingback div.reply a {}
ol.commentlist li.pingback ul.children {}
ol.commentlist li.pingback ul.children li {}
ol.commentlist li.pingback ul.children li.alt {}
ol.commentlist li.pingback ul.children li.bypostauthor {}
ol.commentlist li.pingback ul.children li.byuser {}
ol.commentlist li.pingback ul.children li.comment {}
ol.commentlist li.pingback ul.children li.comment-author-admin {}
ol.commentlist li.pingback ul.children li.depth-2 {}
ol.commentlist li.pingback ul.children li.depth-3 {}
ol.commentlist li.pingback ul.children li.depth-4 {}
ol.commentlist li.pingback ul.children li.depth-5 {}
ol.commentlist li.pingback ul.children li.odd {}
ol.commentlist li.thread-alt {}
ol.commentlist li.thread-even {}
ol.commentlist li.thread-odd {}
The depth actually goes down to level 10 but I stopped at level 5 above. Hopefully you get the idea. There are a lot of elements to style but of course, you don’t have to style them all. For my Magazine Basic theme, I used only the following:
ol.commentlist { list-style:none; margin:0; padding:0; }
ol.commentlist li { border:1px solid #d5d5d5; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; margin:0 0 10px; padding:5px 7px 5px 64px; position:relative; }
ol.commentlist li.pingback comment-author { padding:0 170px 0 0; }
ol.commentlist li div.vcard { font-weight:bold; font-size: 14px; line-height: 16px; font-family: helvetica,arial,sans-serif; }
ol.commentlist li div.vcard cite.fn { font-style:normal; font-size: 11px; }
ol.commentlist li div.vcard cite.fn a.url { color:#cc0000; text-decoration:none; }
ol.commentlist li div.vcard cite.fn a.url:hover { color:#000; }
ol.commentlist li div.vcard img.avatar { background: #fff; border:1px solid #aaa; padding: 5px; left:7px; position:absolute; top:7px; }
ol.commentlist li div.comment-meta { font-weight:bold; font-size: 10px; line-height: 16px; font-family: helvetica,arial,sans-serif; position:absolute; right:10px; text-align:right; top:5px; }
ol.commentlist li div.comment-meta a { color:#205B87; text-decoration:none; }
ol.commentlist li p { font-weight:normal; font-size: 12px; line-height: 16px; font-family: helvetica,arial,sans-serif; margin:5px 0 12px; }
ol.commentlist li ul { font-weight:normal; font-size: 12px; line-height: 16px; font-family: helvetica,arial,sans-serif; list-style:square; margin:0 0 12px; padding:0; }
ol.commentlist li div.reply { background:#999; border:1px solid #666; border-radius:2px; -moz-border-radius:2px; -webkit-border-radius:2px; color:#fff; font:bold 9px/1 helvetica,arial,sans-serif; padding:6px 5px 4px;  text-align:center; width:36px; }
ol.commentlist li div.reply:hover { background:#cc0000; border:1px solid #cc0000; }
ol.commentlist li div.reply a { color:#fff; text-decoration:none; text-transform:uppercase; }
ol.commentlist li ul.children { list-style:none; margin:12px 0 0; text-indent:0; }
ol.commentlist li ul.children li.depth-2 { margin:0 0 3px; }
ol.commentlist li ul.children li.depth-3 { margin:0 0 3px; }
ol.commentlist li ul.children li.depth-4 { margin:0 0 3px; }
ol.commentlist li ul.children li.depth-5 { margin:0 0 3px; }
ol.commentlist ul.children li.odd { background:#fff; }
ol.commentlist ul.children li.even { background:#f6f6f6; }
ol.commentlist li.pingback div.vcard { padding:0 170px 0 0; }
If you have your nested comment level set to 3 you should now have something that looks like this: threaded It all works great but there are a few things that I wanted to change. They don’t make it that easy to manipulate things but I figured it out and added a few touches of my own to get it to perform how I wanted it to. To change the size of the avatar you can change line 25 in comments.php to this:

The default avatar size is 32 and you can change it to anything you want. If you don’t want your comments to be displayed as the default unordered list (ul), you can change the style to divs or an ordered list (ol) by using the following;

Replace div with ol or ul but be sure to also change line 24 and 26 which currently is set for ordered lists so that you have something like this:
If you want to only display comments, trackbacks, pingbacks (trackbacks and pings) or pings, you can use the following:

Now for those people who want total control over their code. This is not recommended to those who are inexperienced with coding. This actually bypasses all of the internal WordPress functionality in regards to comments and lets you customize everything that the wp_list_comments hook spits out. This is a two step process. First add:

Then go to your functions.php file (or create a functions.php file if you don’t already have one) and add this:

  • ' ); ?> %s says:'), get_comment_author_link()) ?>
    comment_approved == '0') : ?>
    $depth, 'max_depth' => $args['max_depth']))) ?>
  • Here there is a lot that you can do. You can set your avatar size, change your classes and ids, change you awaiting moderation text or pretty much just rearrange the entire layout. I even added a little if statement at the end to only display the reply button if your comments can go down another level (this took a long time to figure out but is totally worth it in my books). With everything above in place, your WordPress theme should now be fit to work with nested comments and you should be able to control how they are displayed to your hearts content.

    WordPress maintenance vs management is the single most expensive misunderstanding in the WordPress services market, and most agencies actively make it worse.

    Quick answer: In the WordPress maintenance vs management comparison, maintenance is the technical upkeep that keeps a site running — updates, backups, security scanning, uptime monitoring. Management includes all of that and adds ownership of the site’s direction and performance. Maintenance keeps the site alive. Management is accountable for what it does.

    Most providers reduce WordPress maintenance vs management to two tiers sitting side by side on a pricing page. Pick one.

    That framing is wrong, and it is why so many businesses sign a contract expecting one thing and receive the other. Maintenance and management are not siblings. Management is the superset that contains maintenance. Every genuine management engagement includes the full maintenance task list. No maintenance plan includes management.

    Get the WordPress maintenance vs management decision wrong and you end up with a site that is perfectly updated, perfectly backed up, perfectly secure — and going nowhere.


    WordPress maintenance vs management at a glance

     WordPress MaintenanceWordPress Management
    Core questionIs the site working?Is the site working for the business?
    PostureReactive and scheduledProactive and strategic
    Who decides what changesYou do. The provider executes.The provider recommends. You approve.
    ScopeUpdates, backups, security scans, uptime monitoringEverything in maintenance, plus performance, content, SEO, conversion, roadmap
    Monthly deliverableA completed-tasks reportA performance report with recommendations
    Measured byUptime, patch currency, backup successTraffic, rankings, conversions, revenue
    Accountable for outcomesNoYes
    Typical US cost$50–$200/mo$250–$2,000+/mo
    If you skip itThe site breaksThe site quietly stops competing

    WordPress maintenance vs management: the 7 critical differences

    Seven differences do the real work in WordPress maintenance vs management. Everything else is a variation on them.

    1. Detection. Under maintenance, you notice problems first. Under management, your provider does.

    2. Decision-making. Maintenance executes your instructions. Management forms its own recommendations.

    3. Accountability. Maintenance is accountable for tasks completed. Management is accountable for business outcomes.

    4. Scope boundaries. Maintenance has a fixed task list. Management has a roadmap that changes with your goals.

    5. Reporting. Maintenance reports what was done. Management reports what happened and what to do next.

    6. Judgement. Maintenance keeps your existing plugins updated. Management questions whether you should be running them at all.

    7. Direction. Maintenance preserves the status quo. Management moves the site somewhere.


    What WordPress maintenance actually covers

    WordPress maintenance is the recurring technical work required to keep an installation secure, current and available. Whether you run the list in-house or buy WordPress maintenance services from an agency, that list barely changes month to month:

    • Core, plugin and theme updates, staged and tested before they touch production
    • Offsite backups with periodic restore tests — an untested backup is a guess
    • Security scanning and malware monitoring, plus firewall rules and login hardening
    • Uptime monitoring with alerting
    • Database optimisation — post revisions, expired transients, orphaned tables
    • Broken link and 404 monitoring
    • PHP compatibility checks ahead of host-forced version bumps
    • A monthly report confirming what was done

    That is the whole category. It is genuinely valuable and genuinely finite.

    The defining characteristic is that the provider is not deciding anything. If your plugin roster is wrong, maintenance keeps the wrong plugins updated. If your homepage does not convert, maintenance keeps a non-converting homepage online with excellent uptime.


    What WordPress management adds on top

    Management contains the full maintenance list, then adds responsibility for direction and performance. That is the line between buying a maintenance plan and buying website management services: one keeps the site current, the other is answerable for what it achieves.

    You cannot manage a site you are not maintaining. You can absolutely maintain a site nobody is managing — and a great many businesses are doing exactly that.

    Management adds performance ownership, content and publishing, SEO oversight, conversion work, roadmap planning, vendor coordination, and reporting that ties site metrics to business outcomes.


    The one test that settles WordPress maintenance vs management

    Ignore the feature list. Ask one question:

    When something on your site should change, who notices first?

    Under maintenance, you notice. You find the broken contact form when a customer complains, email your provider, and they fix it — billing you if it falls outside scope. Detection sits with you. That is not a failure; it is how maintenance is designed.

    Under management, your provider notices, and comes to you with a diagnosis before you have seen the problem.

    Detection order matters more than response time. If your provider’s first awareness of a problem is your email, a two-hour response SLA is irrelevant. The delay already happened, and it was measured in days.


    Why “my host handles updates” is dangerously wrong

    This is the costliest misunderstanding inside the WordPress maintenance vs management question, and the documentation is partly to blame.

    Plugin and theme auto-updates are off by default in WordPress. The explicit statement lives on make.wordpress.org rather than user-facing docs. There is a setting called plugins_auto_update_enabled that defaults to true, which is easy to misread as auto-updates being on. It only controls whether the interface elements display.

    More significantly: any plugin or theme not hosted in the WordPress.org directory receives no automatic updates at all. The update check is a single request matched by directory slug, so a commercial product produces no result. If you run a premium theme or paid plugins — and most business sites do — that entire portion of your attack surface is invisible to every automatic mechanism in the platform.

    The scale is not small. Patchstack recorded 11,334 new WordPress vulnerabilities in 2025, a 42% year-on-year rise, with 91% in plugins. (Patchstack, State of WordPress Security in 2026)

    Here is why that lands on the management side of the WordPress maintenance vs management line. Patching on schedule is a checklist task. Deciding which plugins are worth their attack surface, keeping a tracked manual process for every commercial product the auto-updater cannot see, and noticing when a vendor has abandoned a plugin — those are judgement calls. No checklist produces them.

    One honest caveat. The widely repeated claim that plugin vulnerabilities cause most WordPress compromises is not currently sourced. The 91% figure describes the vulnerability catalogue, not breach causes. The most recent hacked-site telemetry, Sucuri’s 2023 report, found 13.97% of compromised sites had a vulnerable component present — presence, not cause. Meanwhile Wordfence blocked 55 billion password-hacking attempts against 48 billion vulnerability-targeting requests in 2024, and both vendors name stolen credentials as the rising intrusion source. (Wordfence, 2024 Annual WordPress Security Report)

    Which is itself the argument. Maintenance patches. Management looks at where the evidence points and fixes your credential controls too.


    WordPress maintenance vs management in five real scenarios

    ScenarioMaintenance onlyFull management
    Critical plugin vulnerability disclosedPatched next scheduled cycleIdentified, staged, tested, deployed — including commercial plugins no auto-updater reaches
    Traffic spike overloads the serverSite slows; you hear it from visitorsLoad monitored, resources scaled before users notice
    Rankings decline over three monthsYou find it in Analytics weeks laterFlagged in the monthly report with a fix
    Contact forms stop capturing leadsYou find out when prospects stop callingConversion tracking catches it and escalates
    Seasonal campaign needs a new featureYou request a quote; billed separatelyProposed proactively as part of the roadmap

    That is WordPress maintenance vs management in practice: maintenance keeps the engine running, management drives the car somewhere.


    Where hosting and support fit into WordPress maintenance vs management

    Managed WordPress hosting covers the server: infrastructure uptime, server-side caching, platform security, sometimes automatic core updates. It does not cover anything inside your install. If a plugin update breaks your checkout, your host will tell you that is not their problem.

    WordPress support services are reactive help on request. Something breaks, you open a ticket, someone fixes it. Support is measured in response time. Maintenance is measured in prevention.

    The clean hierarchy:

    1. Hosting — where the site runs
    2. Maintenance — keeping what runs healthy
    3. Support — fixing what breaks
    4. Management — all of the above, plus deciding what should change and owning the result

    WordPress maintenance vs management: which does your business need?

    Your decision is not which to pick. It is how far up the hierarchy your site needs to go.

    WordPress maintenance vs management: choose maintenance when…

    • The site is primarily informational, changing infrequently
    • It is not central to lead generation or revenue
    • Someone internal can handle edits and recognise breakage
    • You accept being first to notice problems, because the stakes are lower

    Paying management rates here is a waste. Buy good maintenance and spend the difference elsewhere.

    WordPress maintenance vs management: choose management when…

    • The site supports lead generation, ecommerce or donations
    • Downtime or slow performance has material financial impact
    • You cannot describe the site’s roadmap for the next year
    • Multiple integrations create dependencies nobody is watching
    • Nobody internally owns the site’s performance

    This is the most expensive gap we see: a site receiving excellent maintenance, no downtime in two years, and not one ranking position gained. The provider did nothing wrong — nobody asked them to.

    If you are losing leads because something broke and nobody noticed for days, you do not have a maintenance problem. You have a management gap.

    Start with maintenance, upgrade later when…

    You are early, budget is tight, and the site is not yet a primary channel. Set a trigger and revisit. The mistake is not starting with maintenance — it is staying there for four years while expecting management outcomes.


    Five questions that settle WordPress maintenance vs management before you sign

    1. Who decides what changes on my site? “You tell us” means maintenance.
    2. How do you detect issues, and how fast? Management describes monitoring, alerting and SLAs.
    3. Do you test updates in staging first? Lower tiers push straight to production.
    4. What is in the monthly report? Completed tasks is maintenance. Metrics with recommendations is management.
    5. What is out of scope, and what does it cost? A provider who cannot answer quickly has not thought about it.

    Red flags

    • A plan marketed as management, priced at maintenance rates, with no strategic work
    • No proactive monitoring beyond a basic uptime check
    • No tracked process for commercial plugins and themes
    • The provider has never contacted you first. You always initiate.

    Audit which side of WordPress maintenance vs management you are paying for

    1. Review the last three issues. Did your provider flag them, or did you?
    2. Check six months of reports. Tasks, or metrics with recommendations?
    3. Count your commercial plugins and themes — those get nothing automatically.
    4. Map the site’s business role. Revenue or leads means maintenance alone is insufficient.
    5. Match spend to need. Do not overpay on a brochure site; do not underpay on a revenue site.

    WordPress maintenance vs management FAQ

    What is the difference between WordPress maintenance vs management?

    Maintenance is scheduled technical upkeep — updates, backups, security scanning, uptime monitoring. Management includes every maintenance task and adds ownership of performance, content, SEO and business outcomes. Maintenance sits inside management rather than beside it, which is why every management plan includes maintenance but no maintenance plan includes management.

    No. Managed hosting is a server product covering infrastructure, caching and platform security. Management is a service relationship covering everything inside your site, including strategy. You can have both, and most active business sites should.

    Over the past six months, has your provider contacted you about a performance decline or a ranking drop before you noticed? Do reports contain recommendations, or only completed tasks? If the answer to both is no, you are receiving maintenance regardless of what the invoice says.

    Yes, and many businesses should. As traffic and revenue dependence grow, the cost of nobody noticing problems first grows with them. Most providers offer stackable tiers that make the transition straightforward.

    In the US market, WordPress maintenance plans typically run $50–$200 per month. Management generally starts around $250 and rises with scope, commonly reaching $1,000–$2,000 where the provider owns SEO, content and conversion work.

    Because plugin and theme auto-updates are off by default in WordPress, and anything outside the WordPress.org directory receives no automatic updates at all. Most business sites run at least one commercial theme or paid plugin, so the platform’s automatic machinery cannot reach a meaningful part of the attack surface.

    Yes, and for a simple site it is reasonable. Budget two to four hours a month. The failure mode is not incompetence — it is the third consecutive month where something more urgent came up.

    With proper monitoring, critical issues should be detected within minutes and a six-business-hour response is a reasonable benchmark. But detection matters more than response. If your provider’s first awareness comes from your email, the delay already happened.

    The site stays secure, current and online. It will not improve. Over two or three years, competitors actively managing their sites will out-rank and out-convert you, and your maintenance reports will show green the entire time.

    WordPress maintenance vs management: the short version

    The WordPress maintenance vs management question comes down to this: maintenance answers “is the site working?” Management answers “is the site working for the business?” One is contained inside the other, and confusing them is the most common reason businesses feel let down by a provider who is technically delivering exactly what was purchased.

    Work out which question you need answered, then buy accordingly.

    Search

    Popular Posts

    Small Biz Website Tips Newsletter

    Stay up to date with the latest marketing, sales, and service tips and news.

    Small Biz Website Tips Newsletter

    Stay up to date with the latest marketing, sales, and service tips and news.