问题描述

这是一个有趣的问题。

我最近注意到,如果你使用代码

remove_meta_box('slugdiv', 'post', 'normal'); 

当您点击页面标题下的网址时,您实际上无法修改该插件。

为了澄清,当您使用 remove_meta_box 作为 slugdiv 时,metabox 和屏幕选项被删除,但您仍然可以点击该标题下的 URL 来编辑它… 但是,当你去更新/发布帖子你所做的任何修改都不需要。

我的目标是从帖子编辑屏幕中删除相同的代谢变量,并从屏幕选项页面中删除它。但是,我想确保在编辑这个仍然可以工作的帖子标题下的。条时。

任何人都可以提供解决这个问题的办法吗?提前致谢。

最佳解决方案

在标题下允许 slug 版本的盒子实际上绑在了 slug metabox 上。它需要它工作。所以,删除 metabox 会打破它。

我认为唯一的解决方案是使用 javascript 或 css 来隐藏它。这样的事情将会起作用:

function hide_slug_box() {
    global $post;
    global $pagenow;
    if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php') {
        echo "<script type='text/javascript'>
            jQuery(document).ready(function($) {
                jQuery('#edit-slug-box').hide();
            });
            </script>
        ";
    }
}
add_action( 'admin_head', 'hide_slug_box'  );

次佳解决方案

我最后只是添加以下 CSS 到一个 css 文件我正在调用我的 functions.php 文件的管理区域:

[for="slugdiv-hide"] { 
    display: none; 
    }

#slugdiv { 
    display: none; 
    }

这样就删除了屏幕选项和 metabox,同时仍允许我编辑标题下的 url 。

UPDATED

根据 FXFUTURE 提供的答案,我通过扩展它来修改他的代码,并包括屏幕选项和 slug metabox 的 css 值,同时确保代码只包含在 post-new.php 和 post.php 页面中。

// HIDE THE SLUG METABOX AND SLUG SCREEN OPTIONS
   function hide_slug_options() {
    global $post;
    global $pagenow;
    $hide_slugs = "<style type="text/css">#slugdiv, #edit-slug-box, [for="slugdiv-hide"] { display: none; }</style>n";
    if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php') print($hide_slugs);
   }
   add_action( 'admin_head', 'hide_slug_options'  );

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。