web-dev-qa-db-fra.com

Désactiver le glisser-déposer du tableau de bord

Je dois désactiver la fonctionnalité glisser-déposer pour les widgets de tableau de bord.

Cela devrait être réalisé avec jquery, tout comme pour dashboard_browser_nag. Je ne suis pas un expert en jquery. Quelqu'un peut-il me dire comment trouver et modifier mes widgets avec jquery?

Jusqu'à présent, je sais que je dois faire quelques .sortable ("cancel"), mais comment exactement?

Merci!

1
johann

Cela supprimera la fonctionnalité déplaçable de chaque widget:

jQuery('.widget.ui-draggable').draggable('destroy')

Vous avez trouvé un bon moyen d’injecter cela dans votre code, soit via wp_enqueue_script(), soit de le renvoyer en ligne sur la page du widget.

Pour cibler un widget spécifique, vous devez faire quelque chose dans ce sens:

jQuery('.widget.ui-draggable').each(function() {
    if (jQuery(this).find('h4').text() == 'Archives')
        jQuery(this).draggable('destroy');
}

Ou sélectionnez votre chemin pour trouver le widget par id:

widget-2_calendar-__i__
widget-3_categories-__i__
...

Si vous parcourez les sources, vous découvrirez bientôt comment elles sont formées en interne par WordPress. Le reste appartient à jQuery, aux sélecteurs, peut-être aux expressions régulières (bien que je ne les recommande pas dans ce cas).

1
soulseekah

Pas testé, mais cela vous permettrait au moins de commencer. Ajoutez ceci à functions.php ou créez votre propre plugin pour cela.

function remove_drag_and_drop() {
    wp_dequeue_script( 'jquery-ui-sortable' );
}
add_action('wp_dashboard_setup', 'remove_drag_and_drop' );
0
kingkool68

Approche intéressante. Ne fonctionne pas comme ça cependant. Mon meilleur travail jusqu'ici est d'empêcher l'ajout de scripts de pied de page:

 function remove_footer_scripts() { return false; }
 add_filter('print_footer_scripts', 'remove_footer_scripts');

Clairement pas une bonne solution. Mais la fonction wp_dequeue_script suggérée pour supprimer un seul script ne fonctionne pas - peut-être que "wp_dashboard_setup" correspond au mauvais hook? J'ai aussi essayé de me connecter à 'wp_default_scripts' et de modifier le $wp_scripts lui-même, mais sans succès ...

@ Ijaas: bon point, cela casserait également admin_widgets et admin_gallery, mais n'est-il pas possible d'ajouter l'action/le filtre en fonction du $current_screen? Devrait être, car c'est un script de pied de page qui est ajouté après l'appel de set_current_screen().

0
johann