取消邮箱脚本的注册似乎有点过激,如前所述,permalink slug的“编辑”按钮不再像预期的那样工作。
实际上,我想出了另一种方法,它使用Wordpress的过滤器和jQuery UI可排序插件的功能,允许在从特定元素通过cancel 选项
上下文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
.
溶液
Adding classes to the .postbox
elements
Wordpress提供了一个过滤器挂钩来定制添加到邮箱的css类:
postbox_classes_{page}_{id}
{page}
是metabox显示的页面
{id}
是元盒id
因此,如果我将id为“\\u movie\\u details\\u metabox”的metabox应用于名为“movie\\u type”的自定义帖子类型,则可以执行以下操作:
function metabox_not_sortable($classes) {
$classes[] = \'not-sortable\';
return $classes;
}
add_filter(\'postbox_classes_movie_type__movie_details_metabox\', \'metabox_not_sortable\');
Alter jquery ui sortable instance
然后,您可以在管理区域中插入页脚脚本,以更改可排序实例以取消排序事件(如果它是通过.hndle
添加了css类的邮箱中的元素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
不能再排序了,其他的仍然可以。