web-dev-qa-db-ja.com

ダッシュボードのドラッグ&ドロップを無効にする

ダッシュボードウィジェットのドラッグアンドドロップ機能を無効にする必要があります。

これはdashboard_browser_nagの場合と同じように、jqueryを使って実現する必要があります。私はjqueryの専門家ではありません - それでは、誰かがjqueryを使って自分のウィジェットを見つけて変更する方法を教えてもらえますか?

これまでのところ、私はいくつかの.sortable( "cancel")をしなければならないことを知っています、しかしどれほど正確に?

ありがとうございます。

1
johann

これは各ウィジェットからドラッグ可能な機能を削除します。

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

wp_enqueue_script()を通して、あるいはウィジェットページにインラインでエコーすることにより、あなたのコードにこれを挿入するための良い方法を見つけました。

特定のウィジェットをターゲットにするには、次のようにして何かをする必要があります。

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

またはidでウィジェットを見つけるためのあなたの方法を選択してください。

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

あなたがソースの周りを閲覧するならば、あなたはすぐにこれらがWordPressによって内部的に形成される方法を見つけるでしょう。あとはjQuery、セレクタ、あるいは正規表現にかかっています(ただし、この場合はお勧めしません)。

1
soulseekah

テストされていませんが、これは少なくともあなたが始められるようになるでしょう。これをfunctions.phpに追加するか、または独自のプラグインを作成してください。

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

興味深いアプローチしかし、そのようには動作していません。私のこれまでの最善の方法は、anyのフッタースクリプトを追加しないようにすることです。

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

明らかに良い解決策ではありません。しかし、単一のスクリプトを削除するために提案されたwp_dequeue_script関数は機能していません - おそらく 'wp_dashboard_setup'は間違ったフックですか?また、 'wp_default_scripts'にフックして$wp_scripts自体を変更しようとしましたが、成功しませんでした...

@Ijaas:いい点、admin_widgetsとadmin_galleryも壊れるでしょうが、$current_screenによってはaction/filterを追加することはできませんか? set_current_screen()が呼び出された後に追加されるフッタースクリプトなので、そうするべきです。

0
johann