你的方法有几个问题
通过使用admin_init 钩子您将不会有任何对post对象的引用。这意味着您将无法获取帖子ID或使用诸如get\\u the\\u ID之类的任何操作,因为帖子实际上不会被加载。你可以在这里的顺序中看到https://codex.wordpress.org/Plugin_API/Action_Reference
因此,如果在wp操作之后运行操作钩子,则会得到post对象。例如
add_action(\'admin_head\', \'remove_content_editor\');
/**
* Remove the content editor from ALL pages
*/
function remove_content_editor()
{
remove_post_type_support(\'page\', \'editor\');
}
现在,此代码段将从所有页面中删除编辑器。问题是
is_home 和
is_front_page 在管理方面不起作用,因此您需要添加一些元数据来区分您是否在主页上。本页对这方面的方法进行了非常全面的讨论:
Best way to present options for home page in admin?所以,如果你使用了一些额外的元数据,你可以这样检查
add_action(\'admin_head\', \'remove_content_editor\');
/**
* Remove the content editor from ALL pages
*/
function remove_content_editor()
{
//Check against your meta data here
if(get_post_meta( get_the_ID(), \'is_home_page\' )){
remove_post_type_support(\'page\', \'editor\');
}
}
希望这能帮到你
*******更新************
实际上,我刚刚再次研究了这个问题,并意识到有一种更简单的方法。如果在阅读设置中将首页设置为静态页,则可以对照page_on_front 选项值。在这种情况下,以下操作将起作用
add_action(\'admin_head\', \'remove_content_editor\');
/**
* Remove the content editor from pages as all content is handled through Panels
*/
function remove_content_editor()
{
if((int) get_option(\'page_on_front\')==get_the_ID())
{
remove_post_type_support(\'page\', \'editor\');
}
}