Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have the site in WordPress where I used the custom fields, but now I want to use that custom field as post tag automatically.

Can anyone have any idea?

Thanks.

share|improve this question

migrated from stackoverflow.com Sep 26 '11 at 12:13

This question came from our site for professional and enthusiast programmers.

3 Answers 3

As far as I am aware, this isn't possible to do automatically "out of the box". A quick Google and it looks like there are currently no plugins that will do the job for you.

However, I can't see any reason why a plugin couldn't be written to do this. You'll need to use the "save_post" hook, which will run every time a post is saved/updated, check the custom field and apply it as a tag.

Documentation on this particular hook is sparse, but it's mentioned here:

http://codex.wordpress.org/Plugin_API/Action_Reference

share|improve this answer

To convert the old custom fields, you can write a plugin that, on activation, fetches all the posts with your custom field name and converts them to tags with the handy wp_set_post_terms.

First set up a few constants with your field names and post type.

<?php
/**
 * CHANGE THIS! what is your custom field's name?
 */
define( 'WPSE29498_FIELD', 'custom_field_name' );


/**
 * CHANGE THIS! what post type?
 */
define( 'WPSE29498_TYPE', 'post' );

Then the activation hook function:

<?php
register_activation_hook( __FILE__, 'wpse29498_field_to_tag' );
function wpse29498_field_to_tag()
{
    $posts = get_posts(
        array(
            'post_type'     => WPSE29498_TYPE,
            'post_status'   => array( 'publish', 'draft', 'pending', 'future' ),
            'numberposts'   => -1,
            'meta_key'      => WPSE29498_FIELD
        )
    );

    if( empty( $posts ) ) return;

    foreach( $posts as $p )
    {
        if( $meta = get_post_meta( $p->ID, WPSE29498_FIELD, true ) )
        {
            wp_set_post_terms( $p->ID, $meta, 'post_tag', true );
        }
    }
}

And finally, you can hook into save_post and see if the custom field value is there. If so, make sure it's not a term already, then insert it if it isn't.

Not sure if this is something you needed or a one time conversion.

<?php
add_action( 'save_post', 'wpse29498_save_post' );
function wpse29498_save_post( $post_id )
{
    if( $meta = get_post_meta( $post_id, WPSE29498_FIELD, true ) )
    {
        // get the current post tag
        $terms = wp_get_object_terms( $p->ID, 'post_tag', 'name' );

        // if our term is already there, bail
        if( in_array( $meta, $terms ) ) return;

        // add the term if not
        wp_set_post_terms( $post_id, $meta, 'post_tag', true );
    }
}

As a plugin.

share|improve this answer

I ran into a similar question a while ago from someone asking how to automatically add keywords from the All-in-one SEO plugin as post tags (http://www.vidalquevedo.com/how-to-add-tags/#li-comment-62)

After I saw your question, I took that script I wrote and modified it to automatically add custom field values as post tags as well.

Here's the link to the script and post: http://www.vidalquevedo.com/wordpress-how-to-automatically-convert-custom-fields-to-post-tags/

Thanks, and please let me know if that helps!

Vq.

share|improve this answer
    
I think your solution is to add 'All in one seo' keywors as tag as i read on vidalquevedo.com/how-to-add-tags#comment-123 I am not using all in one SEO, simply inserting custom field to post & want that will be the tags for that post. –  shah parthvi Dec 1 '11 at 8:31

Your Answer

 
discard

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.