web-dev-qa-db-fra.com

add_action pour enregistrer un menu personnalisé

Supposons que les menus personnalisés soient activés avec votre thème WP. Existe-t-il une action associée à la sauvegarde d'un menu une fois que vous l'avez arrangé en conséquence? Pour clarifier davantage: disons que vous avez organisé un menu avec des liens et des publications, comment pouvez-vous obtenir les titres des publications dans ledit menu lors de la sauvegarde (en cliquant sur le bouton "Enregistrer le menu")?

2
cojennin

Au moins en 3.4.1, il existe une action pour cela: wp_update_nav_menu

Voir here .

Ensuite, vous pouvez obtenir les éléments dans votre menu avec quelque chose comme:

add_action('wp_update_nav_menu', 'my_get_menu_items');
function my_get_menu_items($nav_menu_selected_id) {
    $items = wp_get_nav_menu_items($nav_menu_selected_id);
}
4
josh kadis

Il n'y a pas d'action dédiée à vos besoins, mais vous pouvez utiliser le hook 'check_admin_referer' à mauvais escient. Voir le bloc switch ( $action ) dans wp-admin/nav-menus.php pour plus de détails et d’autres options.

Exemple de code pour un début:

add_action( 'check_admin_referer', 'check_nav_menu_updates', 11, 1 );

function check_nav_menu_updates( $action )
{
    if ( ( 'update-nav_menu' != $action ) or ! isset( $_POST['menu-locations'] ) )
    {
        return;
    }

    $nav_locations = $_POST['menu-locations'];
    $nav_title     = $_POST['menu-name'];

    // do something awesome with it.
}
1
fuxia