【问题标题】:How do I stop Wordpress dashboard widgets from being dragged?如何阻止 Wordpress 仪表板小部件被拖动?
【发布时间】:2011-03-24 21:54:08
【问题描述】:

我正在为新手用户设置 Wordpress 3.0.1。仪表板小部件放置得当,我希望它们保持这种状态。据我所知,没有 add_filter 或 add_action 钩子来防止拖动,所以另一种方法是制作一个使用 jQuery 来禁用拖动的插件。我会覆盖哪些处理程序(单击、mouseUp、mouseMove 等)以及覆盖哪些 DOM 元素?

【问题讨论】:

  • 用户是否有理由需要访问外观设置?你能限制用户对主题和小部件的访问吗?
  • 他们无权访问 Appearance;他们是作者。我留在仪表板上的唯一小部件是 Right Now 和 Quickpress。我只想禁用拖放这些小部件。

标签: wordpress drag-and-drop widget dashboard add-filter


【解决方案1】:

使用像WordPress › Role Scoper « WordPress Plugins 这样的角色插件来限制用户可以做什么。编辑核心文件不是一个好主意,因为您的更改将在升级时被覆盖。

【讨论】:

  • 我没有找到任何与拖放小部件相关的功能。不过还是谢谢。
  • 再想一想,小部件是 WP 的核心东西,所以是的,可能不得不破解核心文件。
【解决方案2】:

也许最简单的做法是阻止保存新订单。这将允许用户更改顺序,但不会在下次加载页面时保存更改。

您想阻止meta-box-order ajax 事件:

add_action('check_ajax_referer', 'prevent_meta_box_order');
function prevent_meta_box_order($action)
{
    if ('meta-box-order' == $action /* && $wp_user == 'santa claus' */) {
        die('-1');
    }
}

您可能还想阻止其他操作。打开 Firebug 并检查当你做你想要阻止的事情时向admin-ajax.php 发出了哪些请求。或者使用 CSS 隐藏 屏幕选项 标签。

【讨论】:

    【解决方案3】:

    您可以阻止加载处理小部件/元框拖动和折叠行为的脚本:

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

    可选择将其与一些 CSS 组合以隐藏箭头图标和拖动光标,因为此功能现已禁用:

    .handlediv {
        display: none !important;
    }
    .hndle, .widget-top {
        cursor: default !important;
    }
    

    【讨论】:

      猜你喜欢
      • 2014-04-02
      • 2018-04-04
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 2012-01-29
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      相关资源
      最近更新 更多