防止对特定邮箱元数据进行排序和拖动

时间:2015-06-07 作者:JohnMcCarthy

我试图在编辑帖子/页面时限制某些邮箱/元数据库上的jQuery可排序功能。

到目前为止,我已经将我的客户加入了队列。管理中的js文件

wp\\u enqueue\\u脚本

function jm_load_scripts($hook) {
    if( $hook != \'edit.php\' && $hook != \'post.php\' && $hook != \'post-new.php\' ) 
        return;
    wp_enqueue_script( \'core-functionality-script\', plugin_dir_url( __FILE__) . \'/js/admin.js\' );
}
add_action( \'admin_enqueue_scripts\', \'jm_load_scripts\' );
我创建了一个元盒,其中添加了class 属于"not-sortable" 然后在海关.js 文件,将其可排序性设置为\'cancel\'.

jQuery

jQuery(function($) {
    $(".meta-box-sortables").sortable({
        cancel:".not-sortable"
    });
});
这会阻止用户移动元盒,但仍可以将同级元盒拖到上方,然后将元盒推离其位置。

我找到了另一个解决方案this question 13885665 建议使用以下代码

$( ".meta-box-sortables" ).sortable({
    items : \':not(.not-sortable)\'
});
这完全有道理,我在网上找到了同样的解决方案,但在这种情况下,它禁用了所有元数据库上的可排序功能。

我的下一个想法是,我可能正在覆盖添加.postbox classsortable options 领域items: . 因此,我将代码更改为以下内容。

jquery

$( ".meta-box-sortables" ).sortable({
    items : \'.postbox:not(.not-sortable)\'
});
我经常发现的一个解决方案是禁用管理javascript,这是WordPress特有的postbox.js 我认为任何试图禁用metabox可排序功能的人都不想这样做,因为它删除了很多功能。

我觉得还有一个解决方案需要考虑Question 2474. 但这似乎也不是一个好办法。

我对jQuery没有经验,也没有花太多时间自定义WordPress管理。我可能遗漏了一些显而易见的东西,但在研究了一段时间类似的问题后jQuery-ui 文档,尤其是WordPresswp_admin>js>postbox.js 文件我不能再移动了。

我一直在问这个问题,因为它对Stackoverflow上的jQuery ui有特殊性。

stackoverflow问题

Question 1Question 2

离开WordPress,我可以得到所需的示例,但现在将其添加到我的WordPress解决方案中是我遇到的难题。

1 个回复
SO网友:tao

是的,可以限制方框的拖放功能。我们所需要做的就是为它想要定位的特定框找到正确的选择器。当您使用

$(".meta-box-sortables").[...]
您的目标是页面中的所有元素,其类为meta-box-sortables. 但是,如果将自定义类添加到任何这些框中,例如custom-class 然后将jQuery脚本更改为

$(".meta-box-sortables.custom-class").[...]
the[...] 将仅对同时具有meta-box-sortablescustom-class 课程。您不必使用类,也可以使用元素ID来选择所需的元素。就像在CSS中一样。

结束

相关推荐

让作者通过按下按钮向Metabox添加字段

我为作者添加了一个自定义元数据库,他们可以在其中填写指向源的url,然后我可以在模板中使用该url。在我的functions.php<?php /* Add metaboxes (see below) */ function add_custom_metaboxes(){ add_meta_box(\'source_post_metabox\', \'Link to bron (optional)\', \'output_source_metabox\', \'pos