$conf, $runtime; function_exists('chdir') AND chdir(APP_PATH); $r = 'mysql' == $conf['cache']['type'] ? website_set('runtime', $runtime) : cache_set('runtime', $runtime); } function runtime_truncate() { global $conf; 'mysql' == $conf['cache']['type'] ? website_set('runtime', '') : cache_delete('runtime'); } register_shutdown_function('runtime_save'); ?>metabox - Automatically add a tag according to custom metadata|Programmer puzzle solving
最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

metabox - Automatically add a tag according to custom metadata

matteradmin9PV0评论

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.

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.

Share Improve this question edited Feb 17, 2013 at 10:57 Lea Cohen 1,6603 gold badges22 silver badges45 bronze badges asked Feb 17, 2013 at 7:13 TheMadcoreTheMadcore 314 bronze badges
Add a comment  | 

3 Answers 3

Reset to default 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 );

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?

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/Plugin_API

Post a comment

comment list (0)

  1. No comments so far