WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am implementing a custom Meta box that allows the user to add images via a simple file input field (based around code on this site: Meta Box Script). This code allows multiple images to be added as attachments to the page and it does it without the full upload dialogue box, you just select the image file and publish the page and the image is uploaded. This works great, however, I would like to be able to add a link on each image so that you can set an image as a featured image.

Here's an image showing what this looks like: Image thumbnails with links

I snooped around the standard image uploader and can see that there is a JS file (/wp-admin/js/set-post-thumbnail.js) that is triggered as an AJAX call and this sets the image as a featured image. I'm using the following code (echo'd by PHP hence the escaping) to add the 'Use as featured image' link:

<script type=\"text/javascript\" src=\"/wp-admin/js/set-post-thumbnail.js\"></script>
<a class=\"wp-post-thumbnail\" id=\"wp-post-thumbnail-1915\" href=\"javascript:void(0)\" onclick=\"WPSetAsThumbnail(&quot;{$att->ID}&quot;, &quot;{$nonce}&quot;);return false;\">Use as featured image</a>

I figured this much out with a bit of trial and error but it doesn't work as I get an error Uncaught ReferenceError: setPostThumbnailL10n is not defined, this is because I don't have JS loaded that provides the setPostThumbnailL10n and probably other problems too!

Basically I'm trying to figure out if it's feasible to tap into this inbuilt functionality easily. My other option is to roll my own JS which saves an image as featured instead. I will also require being able to unset an images as featured too. Any ideas greatly welcome as this seems kind of uncharted territory as Googling this hasn't come up with anything!

share|improve this question
up vote 3 down vote accepted

even if you had included the all of the needed files you will still have to create your some extra hidden fields like _nonce to pass the

check_ajax_referer( "set_post_thumbnail-$post_ID" );

also you would need to create an action hidden field to identify the case of Ajax call with the value : "set-post-thumbnail"

You are better of creating your own Ajax call and simply use in your callback function:

    set_post_thumbnail( $post, $thumbnail_id );
    update_post_meta( $post->ID, '_thumbnail_id', $attachment_id );

and to unset use

delete_post_meta( $post_ID, '_thumbnail_id' );
share|improve this answer
Thanks, using update_post_meta has worked perfectly via an AJAX call :) I was able to hook into AJAX methods already working within the metabox script I was using and managed to make it work fairly easily. – Rick Curran Mar 9 '11 at 10:43

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.