Latest TweetsVerify any search engine or visitor via CLI Forward-Reverse Lookup…
Perishable Press

Backwards-Compatible Spam and Delete Buttons for WordPress

Recently, Joost de Valk shared an excellent technique for adding spam and delete buttons to comments on your WordPress-powered blog. The idea is to save administration time by providing links to either “spam” or “delete” individual comments without having to navigate through the WordPress Admin Area. Joost provides the following plug-n-play solution:

// add this code to your theme's function.php file:
<?php function delete_comment_link($id) {
	if (current_user_can('edit_post')) {
		echo '| <a href="'.admin_url("comment.php?action=cdc&c=$id").'">del</a> ';
		echo '| <a href="'.admin_url("comment.php?action=cdc&dt=spam&c=$id").'">spam</a>';
} ?>

// then, add this tag to a location in your comments.php file:
<?php delete_comment_link(get_comment_ID()); ?>

Nice! This code snippet works great for all versions of WordPress that support the admin_url() function, which I think is any version greater than or equal to 2.6. So, to get this code working in older versions (less than v2.6) of WordPress, we need to provide the required path information without using admin_url(). One way of doing this is to replace the version-specific admin_url() function with the get_bloginfo() template tag. We can then use the wpurl parameter to return the WordPress installation directory, which is subsequently echoed in the following reformatted function:

// spam & delete links for all versions of WordPress
<?php function delete_comment_link($id) {
	if (current_user_can('edit_post')) {
		echo '| <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php?action=cdc&c='.$id.'">del</a> ';
		echo '| <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php?action=cdc&dt=spam&c='.$id.'">spam</a>';
} ?>

Place this function in your theme’s functions.php file, and then call the function by adding the following code to the desired location in your comments.php file:

<?php delete_comment_link(get_comment_ID()); ?>

And that’s all there is to it! Depending on placement of the function call, your comments area should now feature quick and easy “spam” and “delete” buttons next to each individual comment. Even better, this improved function is version-independent, backwards-compatible, and thus will work for any version of WordPress.

Jeff Starr
About the Author Jeff Starr = Web Developer. Book Author. Secretly Important.
14 responses
  1. john doedeod January 15, 2010 @ 11:02 pm

    i thought i would also add to this post… when adding this to my theme i found it was not validating until i made the following changes…

    I replaced all (3) instances of the & with the html equivalent &amp;

    After making the changes the site validated fine and functioned as required.

    cheers and thanks Jeff for having such a great site!!!!!!

  2. Jeff Starr

    Awesome, john — thanks for the tip! :)

[ Comments are closed for this post ]