web-dev-qa-db-fra.com

Ajouter la surbrillance au nouvel élément de menu du tableau de bord d'administration

J'ai implémenté un élément de menu personnalisé dans mon tableau de bord wordpress à l'aide de la commande suivante du fichier functions.php

function create_menu() {
    $settings_page = add_menu_page('Edit_Post_69', 'Edit_Post_69', 'add_users', '/post.php?post=69&action=edit', '', get_stylesheet_directory_uri() . '/editicon.png', 2);
}

Cela fonctionne très bien et a ajouté l'icône dans le menu dash, inclus l'icône et lorsque je clique dessus, m'emmène à la page Modifier le message du message # 69.

enter image description here

Le problème auquel je suis confronté est que, même si j'ai cliqué sur mon lien personnalisé, la page sur laquelle elle se trouve actuellement est la page Modifier le message, la flèche en surbrillance se trouve sur la section Message plutôt que sur ma section personnalisée, comme dans l'image ci-dessous.

snapshot2

Ce dont j'ai besoin, c’est que mon élément personnalisé soit également mis en évidence. J’ai essayé de regarder les filtres et de creuser _wp_menu_output, l’idée étant de filtrer le code HTML et de changer la classe id de l’élément pour le surligner.

Quelqu'un peut-il m'orienter dans la bonne direction pour résoudre ce problème?

3
fightstarr20

La probabilité est grande qu'aucun crochet n'existe pour cela ...

Mais cela peut être résolu avec jQuery:

add_action( 'admin_head-post.php', 'wpse_58567_highlight_menu_item' );

function wpse_58567_highlight_menu_item()
{
    global $post;

    if( 69 != $post->ID )
        return;

    ?>
        <script type="text/javascript">
            jQuery(document).ready( function($) {
                $('#toplevel_page_post-post-69-action-edit').removeClass('wp-not-current-submenu').addClass('current');
                $('#toplevel_page_post-post-69-action-edit').find('a:last').addClass('current');
            });     
        </script>
    <?php
}
2
brasofilo