问题描述
这是一个有趣的问题。
我最近注意到,如果你使用代码
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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。