メタボックスを固定要素として、拡張機能とドラッグアンドドロップ機能を削除したいと思います。
何か案は?
ポストボックススクリプトの登録を解除することは少し劇的に思えました、そして言及されたようにパーマリンクスラッグのための「編集」ボタンはもう期待通りに動作しません。
私は実際には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
を使って発行されます。
.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');
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
のポストボックスはソートできなくなり、他のものはまだソートできません。
'ポストボックス'スクリプトの登録を解除します 。以下をテーマの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');