Current path: home/webdevt/www/wdp/wp-content/plugins/SecretLabInstaller/modules/secretlab-importer/
?? Go up: /home/webdevt/www/wdp/wp-content/plugins/SecretLabInstaller/modules
<?php
require SECL_INSTALLER_PATH . '/modules/wordpress-importer/wordpress-importer.php';
if ( class_exists( 'WP_Import' ) ) {
class Secretlab_Import extends WP_Import {
/**
* Attempt to create a new menu item from import data
*
* Fails for draft, orphaned menu items and those without an associated nav_menu
* or an invalid nav_menu term. If the post type or term object which the menu item
* represents doesn't exist then the menu item will not be imported (waits until the
* end of the import to retry again before discarding).
*
* @param array $item Menu item details from WXR file
*/
function process_menu_item( $item ) {
// skip draft, orphaned menu items
if ( 'draft' == $item['status'] )
return;
$menu_slug = false;
if ( isset($item['terms']) ) {
// loop through terms, assume first nav_menu term is correct menu
foreach ( $item['terms'] as $term ) {
if ( 'nav_menu' == $term['domain'] ) {
$menu_slug = $term['slug'];
break;
}
}
}
// no nav_menu term associated with this menu item
if ( ! $menu_slug ) {
_e( 'Menu item skipped due to missing menu slug', 'sci' );
echo '<br />';
return;
}
$menu_id = term_exists( $menu_slug, 'nav_menu' );
if ( ! $menu_id ) {
printf( esc_attr__( 'Menu item skipped due to invalid menu slug: %s', 'sci' ), esc_html( $menu_slug ) );
echo '<br />';
return;
} else {
$menu_id = is_array( $menu_id ) ? $menu_id['term_id'] : $menu_id;
}
foreach ( $item['postmeta'] as $meta ) {
${$meta['key']} = $meta['value'];
$menu_item_meta[$meta['key']] = $meta['value'];
}
if ( 'taxonomy' == $_menu_item_type && isset( $this->processed_terms[intval($_menu_item_object_id)] ) ) {
$_menu_item_object_id = $this->processed_terms[intval($_menu_item_object_id)];
} else if ( 'post_type' == $_menu_item_type && isset( $this->processed_posts[intval($_menu_item_object_id)] ) ) {
$_menu_item_object_id = $this->processed_posts[intval($_menu_item_object_id)];
} else if ( 'custom' != $_menu_item_type ) {
// associated object is missing or not imported yet, we'll retry later
$this->missing_menu_items[] = $item;
return;
}
if ( isset( $this->processed_menu_items[intval($_menu_item_menu_item_parent)] ) ) {
$_menu_item_menu_item_parent = $this->processed_menu_items[intval($_menu_item_menu_item_parent)];
} else if ( $_menu_item_menu_item_parent ) {
$this->menu_item_orphans[intval($item['post_id'])] = (int) $_menu_item_menu_item_parent;
$_menu_item_menu_item_parent = 0;
}
// wp_update_nav_menu_item expects CSS classes as a space separated string
$_menu_item_classes = maybe_unserialize( $_menu_item_classes );
if ( is_array( $_menu_item_classes ) )
$_menu_item_classes = implode( ' ', $_menu_item_classes );
$args = array(
'menu-item-object-id' => $_menu_item_object_id,
'menu-item-object' => $_menu_item_object,
'menu-item-parent-id' => $_menu_item_menu_item_parent,
'menu-item-position' => intval( $item['menu_order'] ),
'menu-item-type' => $_menu_item_type,
'menu-item-title' => $item['post_title'],
'menu-item-url' => $_menu_item_url,
'menu-item-description' => $item['post_content'],
'menu-item-attr-title' => $item['post_excerpt'],
'menu-item-target' => $_menu_item_target,
'menu-item-classes' => $_menu_item_classes,
'menu-item-xfn' => $_menu_item_xfn,
'menu-item-status' => $item['status']
);
$id = wp_update_nav_menu_item( $menu_id, 0, $args );
//if ( $id && ! is_wp_error( $id ) )
//$this->processed_menu_items[intval($item['post_id'])] = (int) $id;
if ( $id && is_wp_error( $id ) ) {
echo $id->get_error_message();
echo '<br>';
}
else {
foreach ( $args as $a => $arg ) {
unset( $menu_item_meta[ '_' . str_replace('-', '_', $a) ]);
}
unset ( $menu_item_meta['_menu_item_menu_item_parent'] );
$menu_item_meta = array_diff_assoc( $menu_item_meta, $args );
if ( ! empty ( $menu_item_meta ) ) {
foreach( $menu_item_meta as $key => $value ) {
update_post_meta( (int) $id, $key, maybe_unserialize( $value ) );
}
}
}
$this->processed_menu_items[intval($item['post_id'])] = (int) $id;
}
}
function sl_wordpress_importer_init() {
if ( ! function_exists( 'wordpress_importer_init' ) ) {
//load_plugin_textdomain( 'wordpress-importer', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
// WordPress Importer object for registering the import callback
// @global WP_Import $wp_import
$GLOBALS['wp_import'] = new Secretlab_Import();
register_importer( 'wordpress',
'WordPress',
__( 'Import <strong>posts, pages, comments, custom fields, categories, and tags</strong> from a WordPress export file.',
'wordpress-importer' ),
array( $GLOBALS['wp_import'], 'dispatch' ) );
}
}
add_action( 'admin_init', 'sl_wordpress_importer_init' );
}