WordPress.org

Make WordPress Core

Ticket #6393: wp_export_import_links.patch

File wp_export_import_links.patch, 3.2 KB (added by jayminkapish, 10 years ago)

WP Export - Import Blogroll with categories patch

  • wp-admin/link-import.php

     
    100100
    101101                        include_once('link-parse-opml.php');
    102102
     103                        $blogroll_cats = get_terms('link_category', 'get=all');
     104                        foreach ($blogroll_cats as $category){
     105                                $blogroll_categories[$category->name] = $category->term_id;
     106                        }
     107
    103108                        $link_count = count($names);
     109
    104110                        for ( $i = 0; $i < $link_count; $i++ ) {
     111
     112                                if ( !$cat_id = is_term( $link_categories[$i], 'link_category' ) ) {
     113                                        $cat_id = wp_insert_term( $link_categories[$i], 'link_category' );
     114                                        $cat_id = $cat_id['term_id'];
     115                                        $blogroll_categories[$link_categories[$i]] = $cat_id; //adding item to an array of link_cateories from database
     116                                }
     117                                else {
     118                                        $cat_id = (int) $blogroll_categories[$link_categories[$i]];
     119                                }
     120
    105121                                if ('Last' == substr($titles[$i], 0, 4))
    106122                                        $titles[$i] = '';
    107123                                if ( 'http' == substr($titles[$i], 0, 4) )
  • wp-admin/link-parse-opml.php

     
    99        'TITLE'       => 'link_name',
    1010        'TARGET'      => 'link_target',
    1111        'DESCRIPTION' => 'link_description',
    12         'XMLURL'      => 'link_rss'
     12        'XMLURL'      => 'link_rss',
     13        'CATEGORY'    => 'category'
    1314);
    1415
    1516$map = $opml_map;
     
    2021 **/
    2122function startElement($parser, $tagName, $attrs) {
    2223        global $updated_timestamp, $all_links, $map;
    23         global $names, $urls, $targets, $descriptions, $feeds;
     24        global $names, $urls, $targets, $descriptions, $feeds, $link_categories;
    2425
    2526        if ($tagName == 'OUTLINE') {
    2627                foreach (array_keys($map) as $key) {
     
    3738                $targets[] = $link_target;
    3839                $feeds[] = $link_rss;
    3940                $descriptions[] = $link_description;
     41                $link_categories[] = $category;
    4042        } // end if outline
    4143}
    4244
  • wp-links-opml.php

     
    3131foreach ((array) $cats as $cat) {
    3232        $catname = apply_filters('link_category', $cat->name);
    3333
    34 ?>
    35 <outline type="category" title="<?php echo attribute_escape($catname); ?>">
    36 <?php
    37 
    3834        $bookmarks = get_bookmarks("category={$cat->term_id}");
     35
    3936        foreach ((array) $bookmarks as $bookmark) {
    4037                $title = attribute_escape(apply_filters('link_title', $bookmark->link_name));
     38                //adding category as an attribute to the outline. category is a valid attribute in OPML.
     39                //so importer will create link_category if not exists in the database on the fly!
     40                //generated OPML output has been validated on http://validator.opml.org/
    4141?>
    42         <outline text="<?php echo $title; ?>" type="link" xmlUrl="<?php echo attribute_escape($bookmark->link_rss); ?>" htmlUrl="<?php echo attribute_escape($bookmark->link_url); ?>" updated="<?php if ('0000-00-00 00:00:00' != $bookmark->link_updated) echo $bookmark->link_updated; ?>" />
     42        <outline text="<?php echo $title; ?>" type="link" url="<?php echo attribute_escape($bookmark->link_url); ?>" category="<?php echo $catname; ?>" />
    4343<?php
    4444
    4545        }
    46 ?>
    47 </outline>
    48 <?php
    49 
    5046}
    5147?>
    5248</body>