web-dev-qa-db-ja.com

メタボックスブロック - 拡張なし、移動なし

メタボックスを固定要素として、拡張機能とドラッグアンドドロップ機能を削除したいと思います。

何か案は?

3
Lucas

ポストボックススクリプトの登録を解除することは少し劇的に思えました、そして言及されたようにパーマリンクスラッグのための「編集」ボタンはもう期待通りに動作しません。

私は実際にはWordpressのフィルタと cancel オプションを通して特定の要素からソートが発行されたときにソートをキャンセルできるjQuery UI sortable pluginの機能を使う別の方法を思いつきました。

コンテキスト

Wordpress 3.4.2は jQuery UI 1.8.20 を使用しています。これがpostbox.jsで使用されている初期化コードです(関係のないオプションは省略しました)。

a(".meta-box-sortables").sortable({
    ...
    connectWith: ".meta-box-sortables",
    items: ".postbox",
    handle: ".hndle",
    ...
});

そのため、プラグインは要素.postboxのソート可能なリストを作成します。ソートは、子要素.hndleを使って発行されます。

溶液

  1. .postbox要素にクラスを追加する

    Wordpressはポストボックスに追加されたCSSクラスをカスタマイズするためのフィルタフックを提供します。

    postbox_classes_{page}_{id}
    

    {page}は、メタボックスが表示されているページです。
    {id}はメタボックスIDです

    そのため、 "movie_type"というカスタム投稿タイプにid "_movie_details_metabox"を適用したメタボックスを使用する場合は、次のようにします。

    function metabox_not_sortable($classes) {
        $classes[] = 'not-sortable';
        return $classes;
    }
    add_filter('postbox_classes_movie_type__movie_details_metabox', 'metabox_not_sortable');
    


  2. jquery UIソート可能インスタンスを変更します

    次に、追加されたCSSクラス.hndleを持つポストボックスからnot-sortable要素を通して発行された場合にソートイベントをキャンセルするようにソート可能なインスタンスを変更するために、管理領域にフッタースクリプトを挿入できます。

    <?php
    add_action('admin_print_footer_scripts','my_admin_print_footer_scripts',99);
    function my_admin_print_footer_scripts()
    {
        ?><script type="text/javascript">/* <![CDATA[ */
            jQuery(function($)
            {
                $(".meta-box-sortables")
                    // define the cancel option of sortable to ignore sortable element
                    // for boxes with '.not-sortable' css class
                    .sortable('option', 'cancel', '.not-sortable .hndle, :input, button')
                    // and then refresh the instance
                    .sortable('refresh');
            });
        /* ]]> */</script><?php
    }

CSSクラスが.not-sortableのポストボックスはソートできなくなり、他のものはまだソートできません。

4
Didier Ghys

'ポストボックス'スクリプトの登録を解除します 。以下をテーマのfunctions.phpまたはプラグインファイルに配置してください。

function dereg() {
  wp_deregister_script('postbox');
}
add_action('admin_init','dereg');

私は非常に厄介なテストをしました、そしてそれはドラッグと折りたたみを止めます、そして私は何も壊れているのに気づきません。

小さな折りたたみ矢印はまだ表示されますが、それはCSSではなくJavaScriptです。それがあなたを悩ませるなら、あなたはそれでそれを殺すことができます:

function acss() {
echo '<style type="text/css">.postbox:hover .handlediv,
.stuffbox:hover .handlediv {display: none;
}</script>';
}
add_action('admin_head','acss');
1
s_ha_dum