这是一个有趣的问题。

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

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

当您单击页面标题下的URL lug时,实际上无法修改sl。

要澄清,当您将remove_meta_box用于slugdiv时,Metabox和屏幕选项将被删除,但是您仍然可以单击“帖子标题”下的URL进行编辑...但是,当您转到更新/发布帖子时无论您进行的任何修改都不会进行。

我的目的是从“邮政编辑”屏幕上删除相同的Metabox,并将其从屏幕选项页面中删除,但我想确保在邮政标题下编辑slug时,这仍然有效。

谁能为此问题提供解决方案?提前致谢。

有帮助吗?

解决方案 2

我最终只是将以下CSS添加到我在函数中调用的CSS文件。管理区域:PHP文件:

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

#slugdiv { 
    display: none; 
    }

这删除了屏幕选项和Metabox,同时仍允许我编辑标题下的URL。

更新

根据FXFUTURE提供的答案,我通过扩展了他的代码,并包括屏幕选项的CSS值和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'  );

其他提示

允许邮寄标题下的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'  );

您应该在add_meta_boxes挂钩中调用remove_meta_box以使其正常工作。它在4.0上进行了测试。

add_action( 'add_meta_boxes', 'customize_admin_backend_cpt',0 );

function customize_admin_backend_cpt () {
    remove_meta_box( 'slugdiv', 'your_cpt_goes_here', 'normal' );
}

而不是编辑您的CSS文件,可以在您的functions.php中使用它:

function hide_all_slugs() {
global $post;
$hide_slugs = "<style type=\"text/css\"> #slugdiv, #edit-slug-box { display: none; }</style>";
print($hide_slugs);
}
add_action( 'admin_head', 'hide_all_slugs'  );
许可以下: CC-BY-SA归因
scroll top