¿Puedo agregar páginas a mi menú personalizado mediante un script?
Mi tema tiene una asignación de menú personalizado...
function my_register_my_menus() {
register_nav_menus(
array('header-menu' => __( 'Menú de encabezado personalizado' ) )
);
}
...y estoy creando un plugin tipo "instalador" que, al activarse, me gustaría conectar a este menú personalizado y asignarle algunas páginas como si se hubieran creado manualmente.
Sin embargo, la API de menús es bastante nueva y hasta ahora no he podido encontrar ejemplos de cómo hacer esto.
Espero que alguien aquí pueda darme alguna dirección, ejemplos o información sobre cómo hacerlo.
Gracias de antemano :-)

Puedes usar el hook wp_nav_menu_{$menu->slug}_items
y añadir tu enlace con una función de callback, por ejemplo si el slug de tu menú es header-menu
entonces algo como esto:
add_filter('wp_nav_menu_header-menu_items', 'add_my_extra_links',10,2);
function add_my_extra_links($items, $args) {
$newitems = '<li><a title="Enlace de prueba" href="http://google.com">Google</a></li>';
$newitems .= '<li><a title="Enlace de prueba" href="http://yahoo.com">Yahoo</a></li>';
$newitems .= '<li><a title="Enlace de prueba" href="http://bing.com">Bing</a></li>';
$newitems .= $items;
return $newitems;
}
Actualización
Supongo que necesitarías llamar a wp_save_nav_menu_items que es la función usada para guardar los elementos del menú en la base de datos.

No puedo expresar lo agradecido que estoy de ver CUALQUIER señal de vida en esta pregunta. Sin embargo, hay algo: como esto es un filtro, no estoy seguro de que sea lo que estoy buscando. Necesito poder crear un menú mediante un script una sola vez, durante la activación del plugin, para que sea exactamente como si lo hubiera creado manualmente en el sitio, y que persista sin necesidad de un filtro en tiempo de ejecución. ¿Tiene sentido lo que digo?

He actualizado mi pregunta para aclarar un poco. Me he dado cuenta de que no quedó claro que todo esto debe hacerse durante la activación del plugin (una sola vez y listo).

@Scott: actualicé mi respuesta rápidamente porque es muy tarde aquí y estoy medio dormido, pero debería ayudarte a avanzar.
