One of the benefits of having a blog, no matter whether it's WordPress or something else, is being able to interact with your readers through the use of Comments. Obviously, the downside to this is the Spam that you also attract. Thankfully there's quite a few plugins around now that allow you to automatically filter out the majority of Spam comments.
The problem…
Recently though, I found out that within WordPress you can also leave comments on images as well as Posts. It came to my attention through a test blog that I have setup. I use this test site as a “staging server” when I'm making the final touches to a clients website, prior to cutting it across to their “live” domain. It allows me to show the client the finished product with all their content and allows them to check for any last minute revisions. Most of the time Comments are normally Disabled through the Dashboard Settings option (Settings > Discussion > Allow people to post comments on new articles) however recently I started receiving Spam Comments on images themselves. This was happening even though Comments were disabled. It seems that even if your WordPress blog is configured to not allow comments, depending on your theme, it may still be possible for someone to post comments via one of your images.
The solution…
To get around this, you will need to create an attachment.php file for your theme, if it doesn't already have one. If one does exist, WordPress will use your attachment.php file when viewing a single attachment, such as an image. Since all themes are different, I'll show you how to make the modifications to the standard Twenty Ten theme that comes bundled with WordPress.
At around Line 111 in the attachment.php file that is included in the Twenty Ten theme, you should see a line that calls the comments template. It will look like this…
<?php comments_template(); ?>
To avoid having comments posted on your images when you've disabled them, simply replace this line with the following…
<?php if (comments_open($post->post_parent)) { // Only show the Comments Form if the parent post has comments open comments_template(); } ?>
The If statement in the first line checks the Parent Post to see if comments are allowed and if so, will then call the comments template. If comments aren't allowed, the comments form wont be displayed. The second line is simply a std PHP code comment and can be removed if you'd prefer. Personally though, I like to keep my code well documented.
Of course, if you'd rather not have comments posted on images (or any attachments), then you could also simply comment out or remove the call to the comments_template() function all together, from your attachment.php file.
If your theme doesn't have an attachment.php file, you will need to create one. The simplest way to do this is to start by duplicating (& renaming) your single.php file and then adding in the extra functionality as per the attachment.php file included in the Twenty Ten theme.
I know that I'll be including an attachment.php file in any themes that I create from now on. Leave a comment and let me know if this has helped you. π
Pingback: Listed on FAQPAL.com
On my blog I have changed that “” line to the one you mentioned but still I am getting spam comments posted on images π
Do you have some other solution?
Hi Jahingir. You could try commenting out or removing the call to “comments_template();” in your attachment.php file, altogether.
Nice one. There’s a Trac bug request to have this feature looked at, but it’s been pushed back post 3.0. Your workaround is a good solution in the meantime. Thanks for taking the time to write a detailed tutorial.
Very good to hear. Thanks for the update Tom. Appreciated! π
@Tom Auger
Nice to see that someone has put this in as a big in the WordPress Trac. I too get lots of spam on images and would love to turn off comments on images altogether (without having to hack my theme).
great, hopefully I can stop the spam images too, and looking forward to it bieng standard in wp , the more control the better
Thank you so much, at last a post with common sense information and a piece of code I could use quickly to solve a problem. Mwah!
You’re very welcome Cindi. Glad you found it helpful. Thanks for leaving a comment π
In the Twenty Eleven theme, the file you want to modify is images.php. The same code works.
Correction: image.php.
Thanks for the update Ted and also the mention on your own blog. Much appreciated π
Pingback: Controlling Comments on Image Pages in Twenty Eleven | Ted OβHara .net
Thank you for these instructions. I was able to use your code in the image.php file of the Twenty Eleven theme.
Fantastic! Glad you found it useful Kelly. Thanks for commenting π