Changeset 20308
- Timestamp:
- 03/28/2012 04:02:12 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/includes/post.php
r19999 r20308 750 750 */ 751 751 function _fix_attachment_links( $post_ID ) { 752 global $_fix_attachment_link_id;753 754 752 $post = & get_post( $post_ID, ARRAY_A ); 755 756 $search = "#<a[^>]+rel=('|\")[^'\"]*attachment[^>]*>#ie"; 757 758 // See if we have any rel="attachment" links 759 if ( 0 == preg_match_all( $search, $post['post_content'], $anchor_matches, PREG_PATTERN_ORDER ) ) 753 $content = $post['post_content']; 754 755 // quick sanity check, don't run if no pretty permalinks or post is not published 756 if ( !get_option('permalink_structure') || $post['post_status'] != 'publish' ) 760 757 return; 761 758 762 $i = 0; 763 $search = "#[\s]+rel=(\"|')(.*?)wp-att-(\d+)\\1#i"; 764 foreach ( $anchor_matches[0] as $anchor ) { 765 if ( 0 == preg_match( $search, $anchor, $id_matches ) ) 759 // Short if there aren't any links or no '?attachment_id=' strings (strpos cannot be zero) 760 if ( !strpos($content, '?attachment_id=') || !preg_match_all( '/<a ([^>]+)>[\s\S]+?<\/a>/', $content, $link_matches ) ) 761 return; 762 763 $site_url = get_bloginfo('url'); 764 $site_url = substr( $site_url, (int) strpos($site_url, '://') ); // remove the http(s) 765 $replace = ''; 766 767 foreach ( $link_matches[1] as $key => $value ) { 768 if ( !strpos($value, '?attachment_id=') || !strpos($value, 'wp-att-') 769 || !preg_match( '/href=(["\'])[^"\']*\?attachment_id=(\d+)[^"\']*\\1/', $value, $url_match ) 770 || !preg_match( '/rel=["\'][^"\']*wp-att-(\d+)/', $value, $rel_match ) ) 771 continue; 772 773 $quote = $url_match[1]; // the quote (single or double) 774 $url_id = (int) $url_match[2]; 775 $rel_id = (int) $rel_match[1]; 776 777 if ( !$url_id || !$rel_id || $url_id != $rel_id || strpos($url_match[0], $site_url) === false ) 766 778 continue; 767 779 768 $id = (int) $id_matches[3]; 769 770 // While we have the attachment ID, let's adopt any orphans. 771 $attachment = & get_post( $id, ARRAY_A ); 772 if ( ! empty( $attachment) && ! is_object( get_post( $attachment['post_parent'] ) ) ) { 773 $attachment['post_parent'] = $post_ID; 774 // Escape data pulled from DB. 775 $attachment = add_magic_quotes( $attachment ); 776 wp_update_post( $attachment ); 777 } 778 779 $post_search[$i] = $anchor; 780 $_fix_attachment_link_id = $id; 781 $post_replace[$i] = preg_replace_callback( "#href=(\"|')[^'\"]*\\1#", '_fix_attachment_links_replace_cb', $anchor ); 782 ++$i; 783 } 784 785 $post['post_content'] = str_replace( $post_search, $post_replace, $post['post_content'] ); 786 787 // Escape data pulled from DB. 788 $post = add_magic_quotes( $post); 789 790 return wp_update_post( $post); 791 } 792 793 function _fix_attachment_links_replace_cb($match) { 794 global $_fix_attachment_link_id; 795 return stripslashes( 'href='.$match[1] ).get_attachment_link( $_fix_attachment_link_id ).stripslashes( $match[1] ); 780 $link = $link_matches[0][$key]; 781 $replace = str_replace( $url_match[0], 'href=' . $quote . get_attachment_link( $url_id ) . $quote, $link ); 782 783 $content = str_replace( $link, $replace, $content ); 784 } 785 786 if ( $replace ) { 787 $post['post_content'] = $content; 788 // Escape data pulled from DB. 789 $post = add_magic_quotes($post); 790 791 return wp_update_post($post); 792 } 796 793 } 797 794
Note: See TracChangeset
for help on using the changeset viewer.