Los menús de WordPress son una de las funcionalidades menos aprovechadas de WordPress. Una de sus funciones más frecuente es la de blogroll, el problema viene cuando el cliente te pasa una lista de enlaces enorme que te toca meter a mano. Para evitar echar horas a esto, he desarrollado una caja que te aparecerá en los menús de WordPress que te permite importar lotes de enlaces sacados de un Excel, ODS, Google Drive, … tan solo tendrás que copiar las columnas y pegarlas (primera columna es el texto y la segunda el enlace):
// Añadir caja en menus para importar enlaces
function add_menu_importar_box() {
$screen = get_current_screen();
if ($screen->base == 'nav-menus') {
add_meta_box( "add-importar", 'Importar enlaces', 'add_menu_importar_meta_box', 'nav-menus', 'side', 'default', null );
}
}
add_action('admin_head', 'add_menu_importar_box');
function add_menu_importar_meta_box() {
?>
<p>Copia los enlaces de la hoja de cálculo con el siguiente formato: Nombre, Enlace</p>
<textarea id="enlaces-importar" style="width: 100%; height: 100px;"></textarea>
<p class="button-controls">
<span class="list-controls">
<a href="#" class="item-delete borrartodos">Borrarlos todos</a>
</span>
<span class="importar-to-menu">
<input type="submit" class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( __( 'Importar enlaces' ) ); ?>" name="add-taxonomy-menu-item" id="importar-enlaces" />
<span class="spinner"></span>
</span>
</p>
<script type="text/javascript">
jQuery('#importar-enlaces').click(function() {
var enlaces = jQuery('#enlaces-importar').val();
enlaces = enlaces.split('\n');
var cont = 0;
for(var i=0; i<enlaces.length; i++) {
var e = enlaces[i].split('\t');
jQuery('.importar-to-menu .spinner').show();
wpNavMenu.addLinkToMenu(e[1], e[0], wpNavMenu.addMenuItemToBottom, function() {
cont++;
if(cont == enlaces.length) {jQuery('#enlaces-importar').val('');}
jQuery('.importar-to-menu .spinner').hide();
});
}
});
jQuery('.borrartodos').click(function() {
wpNavMenu.removeMenuItem(jQuery('.menu-edit [id^=menu-item]'));
});
</script>
<?php
}
El código es sencillo, con add_menu_importar_box creo la caja y con add_menu_importar_meta_box la “pinto”, luego lo único que hay que hacer es llamar a wpNavMenu.addLinkToMenu con los datos del textarea y listo.
También he añadido botón de borrado masivo, porque borrarlos uno a uno es otra tortura.