I have a custom field on a WooCommerce product, and I am entering the ID of another product into it. When saving that product, I am adding a meta field to the product that was inputted, creating a “link” between them. I have this working fine, but the issue is that it adds it even it is already there.
function part_fits($post_id){
global $post;
global $product;
$current_diagram_id = get_the_ID();
if( have_rows('product_association') ):
while( have_rows('product_association') ): the_row();
$single_part_id = get_sub_field('part');
add_post_meta($single_part_id, 'part_fits', $current_diagram_id);
endwhile;
endif;
}
Is there a way I can check if that exact key and value already exists and only add it if it does not?
4 Answers
It looks like you need to use update_post_meta()
https://codex.wordpress.org/Function_Reference/update_post_meta
Source: WP Codex
The function update_post_meta() updates the value of an existing meta key (custom field) for the specified post.
This may be used in place of add_post_meta() function. The first thing this function will do is make sure that $meta_key already exists on $post_id. If it does not, add_post_meta($post_id, $meta_key, $meta_value) is called instead and its result is returned.
Returns meta_id if the meta doesn’t exist, otherwise returns true on success and false on failure. It also returns false if the value submitted is the same as the value that is already in the database.