WordPress 管理员:将自定义帖子类型作为父菜单的子菜单时,父菜单链接将被 CPT 覆盖

2023-11-25

我注册了一个自定义帖子类型,并且我不希望它有自己的菜单,而是想将其放置为名为的现有管理菜单项的子菜单my-custom-parent-page.

这是我的代码:

register_post_type('my_custom_post_type',
    array(
        'labels' => array(              
            'name'               => __('Books', 'mcpt'),
            'singular_name'      => __('Book', 'mcpt'),
        ),
        'supports' => array('title', 'editor'),
        'show_ui' => true,
        'show_in_nav_menus' => false,
        'show_in_menu' => 'my-custom-parent-page',
    )
);

它有效,这意味着它正确位于菜单下my-custom-parent-page,但是现在当我单击父菜单(即my-custom-parent-page)它向我指出my_custom_post_type页...

有什么帮助吗?


将自定义帖子类型放置在现有父页面的子菜单中

根据 Codex,这是已知且预期的行为:

注意:当使用“某些字符串”显示为插件创建的菜单页面的子菜单时,该项目将成为第一个子菜单项,并替换顶级链接的位置.

Source: https://codex.wordpress.org/Function_Reference/register_post_type#Arguments(请参阅“在菜单中显示”部分)

以下是引用的结尾,它提供了解决方案:

如果不需要,创建菜单页面的插件需要将 admin_menu 的 add_action 优先级设置为 9 或更低。

所以这个问题解决起来非常简单。但是,就我而言,我无法更改父页面的优先级,因为它是由第三方库生成的。因此我想出了这个解决方案:

// Move the "example_cpt" Custom-Post-Type to be a submenu of the "example_parent_page_id" admin page.
add_action('admin_menu', 'fix_admin_menu_submenu', 11);
function fix_admin_menu_submenu() {

    // Add "Example CPT" Custom-Post-Type as submenu of the "Example Parent Page" page
    add_submenu_page('example_parent_page_id', 'Example CPT', 'Example CPT', 'edit_pages' , 'edit.php?post_type=example_cpt');
}

请注意优先级 11,并且在注册 Custom-Post-Type 时我设置了“show_in_menu“参数为false,所以我们可以通过手动将其添加到菜单中add_submenu_page如上图所示。


正确地将 Custom-Post-Type 子菜单条目设置为“活动”

现在,上述解决方案工作正常,但是当创建/编辑“example_cpt”自定义帖子类型的帖子时,它没有设置为活动状态,并且子菜单也没有展开。以下是如何确保在创建/编辑“example_cpt”自定义帖子类型的帖子时将其设置为活动状态以及将其所在的子菜单正确设置为活动状态:

// Set the "example_parent_page_id" submenu as active/current when creating/editing a "example_cpt" post
add_filter('parent_file', 'fix_admin_parent_file');
function fix_admin_parent_file($parent_file){
    global $submenu_file, $current_screen;

    // Set correct active/current menu and submenu in the WordPress Admin menu for the "example_cpt" Add-New/Edit/List
    if($current_screen->post_type == 'example_cpt') {
        $submenu_file = 'edit.php?post_type=example_cpt';
        $parent_file = 'example_parent_page_id';
    }
    return $parent_file;
}

微调:重命名第一个子菜单条目

此外,我还希望子菜单的第一个菜单项的名称与父名称不同。默认情况下,使用上面的代码,这就是我们所拥有的:

- Example Parent Page
-- Example Parent Page
-- Example CPT

正如您所看到的,子菜单的第一个菜单条目是父菜单的重复项,这是默认的 WordPress 行为。我想将此重复条目重命名为不同的名称,就像 WordPress 使用默认菜单所做的那样(例如“帖子”和子菜单条目“所有帖子”,它们都指向同一页面,但名称不同)。

以下是重命名第一个子菜单条目的方法:

add_action('admin_menu', 'rename_first_submenu_entry', 11);
function rename_first_submenu_entry() {

    // Rename first submenu entry (duplicate of parent menu) from "Example Parent Page" to "Submenu Text"
    add_submenu_page('example_parent_page_id', 'Example Parent Page', 'Submenu Text', 'edit_pages' , 'example_parent_page_id');

}

请注意优先级11,所以改名了after它已经被创建了。现在我们有:

- Example Parent Page
-- Submenu Text
-- Example CPT

请注意,“子菜单文本”指向与“示例父页面”相同的位置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WordPress 管理员:将自定义帖子类型作为父菜单的子菜单时,父菜单链接将被 CPT 覆盖 的相关文章

  • WordPress 子主题包括包含文件

    我在一家WordPress使用 AMPPS 作为本地主机在我的本地计算机上进行设置 使用 Delta 主题 我创建了一个子主题 delta2 child 初始设置效果很好 但是 我需要更改包含文件夹中名为 home slider php 的
  • 无法访问 WordPress 中声明的全局变量

    我有以下代码 g value something print g value function get value global g value print g value print get value 当我在独立的 PHP 脚本中运行它
  • 通过 IP 地址限制 Laravel 错误日志

    When debug被设定为true在 Laravel 的app config php有什么方法可以限制结果Whoops包含对某些 IP 地址的堆栈跟踪的错误页面 并且不在该列表中的 IP 显示特定视图 Thanks 没有内置 但是你可能可
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii
  • 如何在 Laravel 中正确返回 JSON 响应?

    return response gt json message gt No new orders 不幸的是 这个回应不起作用 理想情况下 我想返回一个 JSON 响应 其中包含 消息 gt 没有新订单 状态代码为 204 无内容 我在控制器
  • Yii2:使用 Pjax POST 方法和分页在 Gridview 中搜索

    我是 yii2 的初学者 尝试在搜索按钮上使用 Pjax 来搜索 Gridview 中的字段 我已经使用 GET 方法完成此操作 但我想使用 POST 方法完成此操作 那么我该如何使用 Yii2 Pjax post 方法 和分页来做到这一点
  • 将一维数组转换为二维数组并加入 PHP [重复]

    这个问题在这里已经有答案了 我有这个一维数组 array1 Array coupon code gt GTY777R coupon description gt Credito 5 USD array2 二维数组 Array 0 gt Ar
  • PHP 文件大小报告旧大小

    以下代码是我编写的 PHP Web 服务的一部分 它需要一些上传的 Base64 数据 对其进行解码 然后将其附加到文件中 这一切都很好 问题是 当我在追加操作之后读取文件大小时 我得到了追加操作之前文件的大小 fileOut fopen
  • PHP:str_replace() - 忽略空格

    我有一个类似的字符串 我想将其替换为 问题是我不知道之间是否会有空格 和 可能有空白 也可能没有空白 可能有制表符或可能有换行符 我该如何更换
  • 访问父函数中定义的变量

    有没有办法访问 foo从内部inner function outer foo function inner print foo inner outer PHP 在 PHP 5 3 中 你可以这样做 function outer foo in
  • Codeigniter $this->db->reconnect();用法

    I m not自动加载数据库 因为我的应用程序的大多数页面don t需要数据库处理 否则整个事情会变慢 我想要做的是 当数据库已经存在时 不要建立与数据库的新连接 而是使用它而不是打扰服务器数据库 那么我该如何实施 this gt db g
  • 刷新页面后保留输入值

    我有一个带有输入字段的表单 该输入包含一个下拉菜单 从数据库中读取信息 如果用户输入值 并且当他到达下拉菜单时 他没有找到他想要的内容 他会转到另一个页面将此信息添加到下拉菜单 然后转到第一页继续输入信息 如果他转到另一个页面向下拉菜单添加
  • 如何从数据库生成 Doctrine 实体并使用 PSR-4 自动加载?

    使用教义2 5使用 PSR 4 自动加载并将已设计的数据库模式转换为实体类 注释 问题是将导出的文件放入正确的目录结构中 作曲家 json autoload psr 4 Application src require doctrine or
  • 在数据转换之前应用验证

    我想将从提交的用户数据中获得的文本字段转换为 Symfony2 中的对象 我使用 DataTransformer 来做到这一点 当我使用 NotEmpty 或 NotNull 等内置验证器或任何以标准方式内置的自定义验证器时 Symfony
  • 将 RequestBody json 转换为对象 - Spring Boot

    我是 java 开发的初学者 但之前有 PHP 和 Python 等编程语言的经验 对于如何进行 Spring Boot 的开发几乎没有什么困惑 我正在开发一个rest API 它有以下请求 key value key1 value1 pl
  • PHP strtotime +1 个月添加额外一个月[重复]

    这个问题在这里已经有答案了 我有一个简单的变量 可以将今天添加一个月 endOfCycle date Y m strtotime 1 month 今天是 2013 年 1 月 所以我希望返回 2013 02 但我得到的是 2013 03 我
  • 将屏幕宽度获取到 javascript 变量中并通过 ajax 将其发送到 php 页面以避免页面加载

    这是JS检测我的页面命名上的屏幕分辨率index html并将其发送到 php 以便可以使用以下方式检索值 GET 这是我的PHP文件命名的内容process php
  • 将可点击的锚标记转换为 html 文档中的纯文本

    我正在尝试匹配 a 我的内容中的标签 并将其替换为链接文本 后跟打印版本的方括号中的 url 如果只有 href 则以下示例有效 如果 a 包含另一个属性 它匹配太多并且不会返回所需的结果 我怎样才能匹配 URL 和链接文本 就是这样 这是
  • 我可以在类变量中添加没有指定值的 PHP 数组键吗?

    我目前正在努力通过IBM 关于 CakePHP 的教程 http www 128 ibm com developerworks edu os dw os php cake1 html 有一次我遇到了这段代码
  • 检查外部图像是否存在的正确 PHP 方法?

    我知道至少有 10 个相同的问题有答案 但似乎没有一个对我来说完美无缺 我正在尝试检查内部或外部图像是否存在 图像 URL 是否有效 fopen url r 失败 除非我使用 fopen Warning fopen http example

随机推荐

  • 如何在不复制数据的情况下连接 pandas DataFrame?

    我想连接两个 pandas DataFrame 而不复制数据 也就是说 我希望连接的 DataFrame 成为两个原始 DataFrame 中数据的视图 我尝试使用 concat 但不起作用 此代码块显示更改基础数据会影响连接的两个 Dat
  • 从 SQLite3 导出数据

    我需要一种简单的方法从包含多个表的 SQLite 数据库中导出数据 然后将它们导入到另一个数据库中 这是我的场景 我有 5 个表 A B C D E 每个表都有一个主键作为第一列 称为 ID 我想要一个 Unix 命令 它仅以可以导入到另一
  • 如何反序列化 Kubernetes YAML 文件

    如何将 Kubernetes YAML 文件反序列化为 Go 结构 我查看了kubectl代码 但不知何故 每个 YAML 文件都会出现错误 no kind Deployment is registered for version apps
  • Terraform EKS 标记

    我遇到了 Terraform EKS 标记问题 并且似乎没有找到可行的解决方案来在创建新集群时标记所有 VPC 子网 提供一些背景信息 我们有一个 AWS VPC 在其中将多个 EKS 集群部署到子网中 我们不会在 EKS 集群创建过程中创
  • FirebaseError:[code=resource-exhausted]:资源已耗尽(例如检查配额)

    我有一个大小为 10000 的数组 所有这些都是文档 ID 我正在运行一个数组 需要从 Firestore 获取文档数据 并且需要在每个文档中添加新字段 但我面临以下错误 例如 firebase firestore Firestore 5
  • DATETIME 值在 SQLite 中如何工作?

    我正在创建 Android 应用程序 需要保存创建记录的日期 时间 然而 SQLite 文档说 SQLite 没有为存储日期和 或时间而预留的存储类 并且它 能够将日期和时间存储为 TEXT REAL 或 INTEGER 值 使用一种类型而
  • PHP 中有比任何数字都大的东西吗?

    我需要在 PHP 中模拟 So that min number 总是 number 我想 对于整数 你可以使用PHP INT MAX 以下代码 var dump PHP INT MAX 在我的机器上给出以下输出 int 2147483647
  • AccessType.FIELD、AccessType.PROPERTY 和 @Access 的用途是什么

    我只是想知道所有这些注释之间有什么区别 为什么我们使用这些 意味着它们没有影响 尤其是字段级别和属性级别 使用混合级别注释的目的是什么 Entity Access AccessType FIELD class Employee why th
  • C 中是否有单消费者单生产者无锁队列实现?

    我正在编写一个带有消费者线程和生产者线程的程序 现在看来队列同步在程序中是一个很大的开销 我寻找了一些无锁队列实现 但只找到了Lamport的版本和PPoPP上的改进版本 08 enqueue nonblock data if NULL b
  • 按子数组的数量对数组进行排序

    我有一个看起来像这样的数组 Array some first category gt Array some first name gt Array 0 gt email protected 1 gt email protected 2 gt
  • javax.net.ssl.SSLException:证书中的主机名与android不匹配

    我正在创建一个 Android 应用程序 其中我将数据发送到 Web 服务 但我收到 javax net ssl SSLException 证书中的主机名与 android 不匹配的错误 这是我的代码 AsyncHttpClient cli
  • IFrame (HTML) 是否已过时? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 收到的信息相互矛盾 希望不
  • ANGULAR 6:错误 TS2315:类型“ModuleWithProviders”不是通用的

    您好 我遇到了一个与任何事情都无法关联的问题 我展示了一些我的代码 希望它能有用 考虑一下当我开始创建反应式表单时这个问题就出现了 首先 这是我的 package json name name version 0 0 0 scripts n
  • 为什么 QGraphicsItem::scenePos() 不断返回 (0,0)

    我一直在玩弄这段代码 QGraphicsLineItem anotherLine this gt addLine 50 50 100 100 qDebug lt lt anotherLine gt scenePos QGraphicsLin
  • 文本框不会拉伸以填充视图框

    我希望 LOB 表单中的标签和文本框的字体大小随着窗口大小或分辨率的变化而增大和缩小 为了实现这一点 我将标签和文本框放置在视图框中 标签和自定义单选按钮的行为符合我的预期 但文本框不会水平拉伸以填充视图框 抱歉 由于代表而无法发布图像 如
  • Java8 - 如何知道夏令时现在是否开启

    我需要使用新的 Java 8 日期时间类来了解夏令时是否已启用 我找到了一个如何在 jodatime 中执行此操作的条目 jodatime 如何知道夏令时是否开启 但在 Java 8 中如何找到它呢 jodatime应该有点类似 但我找不到
  • 复制数据帧的观察结果,同时替换 R 中的特定变量值

    我正在寻找一些有关数据重组的建议 我正在使用 Google Forms 收集一些数据 我将其下载为 csv 文件 如下所示 alpha beta option 6 8 9 10 11 apple 9 6 pear 1 6 apple 3 8
  • sql仅按顺序的行进行分组

    假设我有下表 MyTable 1 A 2 A 3 A 4 B 5 B 6 B 7 A 8 A 我需要 sql 查询来输出以下内容 3 A 3 B 2 A 基本上我正在做一个group by但仅适用于序列中在一起的行 有任何想法吗 请注意 数
  • C++ 中的点 (.) 运算符和 -> 有什么区别? [复制]

    这个问题在这里已经有答案了 C 中的点 运算符和 gt 有什么区别 foo gt bar 是相同的 foo bar 由于结合强度 上面的括号是必要的 and 运营商 foo bar 不起作用 因为点 运算符首先被评估 参见运算符优先级 点
  • WordPress 管理员:将自定义帖子类型作为父菜单的子菜单时,父菜单链接将被 CPT 覆盖

    我注册了一个自定义帖子类型 并且我不希望它有自己的菜单 而是想将其放置为名为的现有管理菜单项的子菜单my custom parent page 这是我的代码 register post type my custom post type ar