Ticket #4109: 4109.diff
| File 4109.diff, 2.0 KB (added by , 19 years ago) |
|---|
-
wp-includes/post.php
784 784 return wp_update_post(array('post_status' => 'publish', 'ID' => $post_id, 'no_filter' => true)); 785 785 } 786 786 787 function wp_set_post_tags( $post_id = 0, $tags = '' ) { 787 function wp_add_post_tags($post_id = 0, $tags = '') { 788 return wp_set_post_tags($post_id, $tags, true); 789 } 790 791 function wp_set_post_tags( $post_id = 0, $tags = '', $append = false ) { 792 /* $append - true = don't delete existing tags, just add on, false = replace the tags with the new tags */ 788 793 global $wpdb; 789 794 790 795 $post_id = (int) $post_id; 791 796 792 797 if ( !$post_id ) 793 798 return false; 794 795 $tags = explode( ',', $tags ); 799 800 // prevent warnings for unintialized variables 801 $tag_ids = array(); 802 803 $tags = (is_array($tags)) ? $tags : explode( ',', $tags ); 804 796 805 foreach ( $tags as $tag ) { 797 806 $tag = trim( $tag ); 798 807 if ( !$tag_slug = sanitize_title( $tag ) ) … … 801 810 $tag_id = wp_create_tag( $tag ); 802 811 $tag_ids[] = $tag_id; 803 812 } 804 805 if ( !is_array( $tag_ids) )813 814 if ( empty($tag_ids) ) 806 815 return false; 807 816 808 817 $tag_ids = array_unique( $tag_ids ); 809 818 810 819 // First the old tags 811 820 $old_tags = $wpdb->get_col(" 812 821 SELECT category_id 813 822 FROM $wpdb->post2cat 814 823 WHERE post_id = '$post_id' AND rel_type = 'tag'"); 815 824 816 825 if ( !$old_tags ) { 817 826 $old_tags = array(); 818 827 } else { 819 828 $old_tags = array_unique( $old_tags ); 820 829 } 821 830 822 831 // Delete any? 823 832 $delete_tags = array_diff( $old_tags, $tag_ids); 824 if ( $delete_tags ) {833 if ( $delete_tags && !$append ) { 825 834 foreach ( $delete_tags as $del ) { 826 835 $wpdb->query(" 827 836 DELETE FROM $wpdb->post2cat … … 831 840 "); 832 841 } 833 842 } 834 843 835 844 // Add any? 836 845 $add_tags = array_diff( $tag_ids, $old_tags ); 837 846 if ( $add_tags ) { … … 843 852 VALUES ('$post_id', '$new_tag', 'tag')"); 844 853 } 845 854 } 846 855 847 856 // Update category counts. 848 857 $all_affected_tags = array_unique( array_merge( $tag_ids, $old_tags ) ); 849 858 foreach ( $all_affected_tags as $tag_id ) {