1

I'm trying to figure out how to make a function to automatically add a "featured" tag to a post, based on a checkbox in a metabox I've added to the edit screen.

I think the function I need to use is wp_set_object_terms, but I don't get how it works. I know how to check if those checkboxes are active or not, but that´s all.

I hope someone can put me on the right track with this.

2

I accidentally found this question searching for something similar, and I liked your approach, so I improved your code a bit.

  1. I updated the action hook so it's being triggered on save AND update.
  2. Added the wp_remove_object_terms to be able to switch back ( toggle ) custom meta box value ( in this case check-box value ).

function works fine with both, regular and custom post types, also can be used with tags, categories or custom taxonomies too.

function set_term( $post_id, $your_term ){

    $post_id = get_the_ID();

    $your_term = get_post_meta( $post_id, 'your_custom_meta_id', true ); 

    // check the custom meta-box checkbox value
    if ( $your_term == '1' ) {
        // Create a new term if checked
        wp_set_object_terms( $post_id, 'YourTerm', 'your_custom_taxonomy', true );
    } else {
        // Remove the created term if unchecked
        wp_remove_object_terms( $post_id, 'YourTerm', 'your_custom_taxonomy' );
    }
}

add_action( 'save_post', 'set_term', 10, 3 );
| improve this answer | |
1

Ok, found the problem.

This code works like a charm:

function is_featured_post(){
$postid = get_the_ID();
$featured = get_post_meta($postid, 'wpcf-slider-if', true); if ( $featured == 1 ) { 
    wp_set_object_terms( $postid, 'Destacado', 'post_tag', true );
}
}

add_action ( 'publish_post', 'is_featured_post' );

But it only works in standard post, not in custom post types. There is a hook to do the same with custom post types?

| improve this answer | |
0

You can hook into the action with add_action ( 'publish_post', 'your_function' );

Write a function to check if the checkbox is checked and if so update the posts term

http://codex.wordpress.org/Plugin_API

| improve this answer | |
  • I do this: function is_featured_post(){ $postid = get_the_ID(); $featured = get_post_meta($postid, 'wpcf-slider-if', true); if ( $featured == 1 ) { wp_set_object_terms( $postid, 'Destacado', 'post_tag', true ); } } add_action ( 'publish_post', 'is_featured_post' ); But it doesn´t work. To me, the code looks fine. I don´t know what I´m doing wrong. – TheMadcore Feb 18 '13 at 5:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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