如何将管理菜单“Pages”更改为其他选项

时间:2011-01-21 作者:NetConstructor.com

创建自定义帖子类型时,您可以定义与该帖子类型相关的各种元素,这些元素基本上允许您定义菜单标题、“添加新帖子”文本等内容。

我想弄清楚的是我需要向函数中添加什么代码。php文件,以便我可以为wordpress添加的现有“默认”帖子类型设置这些内容。

例如,让我们假设我想将“页面”帖子类型更改为“主要部分”。

目前我所做的是使用以下代码:

add_filter( \'gettext\', \'change_admin_menu_pages\' );
add_filter( \'ngettext\', \'change_admin_menu_pages\' );
function change_admin_menu_pages( $translated ) {
    $translated = str_replace( \'Page\', \'Core Page\', $translated );
    $translated = str_replace( \'page\', \'core page\', $translated );
    return $translated;
}
虽然这很有效,只是用“主要部分”替换了“页面”的每个实例,但我注意到它也会影响站点的其他区域,例如在url中使用“pages=”的插件。

像这样的有没有一种简单的方法来定义默认wordpress帖子类型(如“页面”和“帖子”)的帖子类型设置?如果是这样的话,请有人快速说明这可能是如何工作的?

另一方面。。。我觉得使用过滤器

添加筛选器(\'ngettext\',…)实际上非常有用,但我不明白的是如何限制允许过滤内容的区域。

如果您能回答这两个问题或任何一个问题,我们将不胜感激

提前谢谢!

2 个回复
最合适的回答,由SO网友:MikeSchinkel 整理而成

另一个简单的!:)

正如你所知,我对WordPress总体评价很高,但管理菜单架构是我在开源软件中见过的最恶劣的黑客之一。更重要的是核心WordPress团队不愿意承认它有多糟糕,也不愿意讨论改进它。但我离题了。。。

无论如何,这是你想要的(我想):

Screenshot of a WordPress admin menu modified to
(来源:mikeschinkel.com)

下面是如何获得它:

add_action(\'admin_menu\',\'rename_pages_to_main_sections\');
function rename_pages_to_main_sections() {
  global $menu;
  global $submenu;
  $menu[20][0] = \'Main Sections\';
  $submenu[\'edit.php?post_type=page\'][5][0] = \'Main Sections\';
}
另外,你可能会发现我在这里发布的代码也很有用:

SO网友:wyrfel

迈克,你应该在“另一个简单的”上贴上一个“萨卡姆”的标签线有一段时间,我不太明白破解核心菜单数组是多么容易。。。直到我读到你的“挑战”。

我在使用3.0.5时遇到了类似的挑战。。。这是尝试在自定义帖子类型部分下面添加自定义页面。执行此操作时,它始终作为“编辑”加载。php?post\\u类型=xyz。

有趣的是,编辑。php包含admin标头。php,然后它又包括admin。php,这将导致加载通过add\\u submenu\\u page()指定的页面。但首先,这似乎更像是一个幸运的发现,其次,它只有在编辑后才能做到这一点。php完成了所有的初始化工作。令人不快的

此外,当您尝试在页面上重用URL或其部分(如查询args等)时,会导致麻烦。

总而言之,我完全同意。。。这件事太容易了,无法证明对管理菜单生成进行彻底检查是正确的

无论如何,谢谢你的提示,我现在要尝试通过直接破解阵列来实现我的目标。

结束

相关推荐

Menu API not switching menus?

我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph