【问题标题】:How can I link a custom post type from the admin submenu in wordpress?如何从 wordpress 的管理子菜单链接自定义帖子类型?
【发布时间】:2018-12-07 09:51:09
【问题描述】:

我创建了一个自定义帖子类型并将其隐藏

使用register_post_type()

和使用

的菜单页面

add_menu_page()add_submenu_page()

自定义帖子类型的链接是page=edit.php?post_type=survey

菜单页面是admin.php?page=my_survey

我隐藏了custom post type,因为我不想显示它,我只想拥有一个菜单,但带有指向custom post type的子菜单页面的链接

问题是菜单中的所有链接都有前缀 admin.php?page= 当我在

中添加链接时

menu_slug => 'edit.php?post_type=survey'

它添加了admin.php?page=edit.php?post_type=survey

我是否可以只从一个子菜单中删除该前缀?

我正在开发 OOP 这就是我添加子菜单的方式

  public function setSubPages()
  { 
    $this->subpages = [
      [
        'parent_slug'  => 'survey',
        'page_title'  => 'Survey Plugin',
        'menu_title'  => 'Survey',
        'capability'  => 'manage_options',
        'menu_slug'   => 'edit.php?post_type=survey',
        'callback'    =>   [$this->callbacks, 'adminDashboard'],
      ];
  }

和我的自定义帖子类型

  public function activate()
  {
    $labels =  [
      'name' => 'survey',
      'singular_name' => 'survey',

    ];

    $args = [
      'labels' => $labels,
      'public' => true,
      'has_archive' => false,
      'menu_icon' => 'dashicons-email-alt',
      'supports' => false,
      'exclude_from_search' => true,
      'publicly_queryable' => false,
      'show_in_menu'       => false
    ];

    register_post_type( 'survey', $args );

  }

如果我不够清楚,请告诉我 谢谢

【问题讨论】:

    标签: php wordpress menu wp-admin


    【解决方案1】:

    这就是我解决问题的方法,因为那些人​​有同样的问题 希望有帮助

    自定义帖子类型

          public function activate()
          {
            $labels =  [
              'name' => 'Email List',
              'singular_name' => 'Email List',
    
            ];
    
            $args = [
              'labels' => $labels,
              'public' => false,
              'has_archive' => false,
              'menu_icon' => 'dashicons-email-alt',
              'supports' => false,
              'exclude_from_search' => true,
              'publicly_queryable' => false,
              'show_in_menu'       => 'survey_plugin'  // <----- admin page menu_slug
            ];
    
            register_post_type( 'surveyemail', $args );
    
          }
    

    管理员调查页面

    public function setPages()
      { 
        $this->pages = [
          [
            'page_title'  => 'Survey Plugin',
            'menu_title'  => 'survey',
            'capability'  => 'manage_options',
            'menu_slug'   => 'survey_plugin', // same as show_in_menu custom post type
            'callback'    =>   [$this->callbacks, 'adminDashboard'],
            'icon_url'    => 'dashicons-format-aside',
            'position'    => 25
          ]
        ];
    
      }
    
      public function setSubPages()
      { 
        $this->subpages = [
          [
            'parent_slug'  => 'survey_plugin', // match menu_slug $this->page
            'page_title'  => 'Welcome',
            'menu_title'  => 'Welcome page',
            'capability'  => 'manage_options',
            'menu_slug'   => 'Welcome',
            'callback'    =>   [$this->callbacks, 'adminDashboard'],
          ],
          [
            'parent_slug'  => 'survey_plugin',// match menu_slug $this->page
            'page_title'  => 'feedback',
            'menu_title'  => 'feedback',
            'capability'  => 'manage_options',
            'menu_slug'   => 'feedback',
            'callback'    =>   [$this->callbacks, 'adminDashboard'],
          ]
    
    
        ];
      }
    

    【讨论】:

      【解决方案2】:

      首先,如果您之后在参数中取消设置每个效果 (https://codex.wordpress.org/Function_Reference/register_post_type),将 public 设置为 true 是没有意义的。

      第二件事:不能这样使用menu slug,因为它的定义如下:

      $menu_slug

      (字符串)(必需)引用此菜单的 slug 名称。应该 此菜单独一无二,仅包含小写字母数字、破折号、 并下划线字符与 sanitize_key() 兼容。

      但是,有一种方法可以创建自定义子菜单 URL。请查看 SO WordPress 上的以下主题以获取更多信息:https://wordpress.stackexchange.com/questions/83768/add-menu-and-submenu-in-admin-with-a-url-instead-of-slug?answertab=votes#tab-top

      但是,请注意您在 WP-Admin 中所做的事情,如果您希望在 WP-Admin 中拥有可编辑的帖子类型,通常是通过参数对其进行编辑的最佳方式。

      【讨论】:

      • 谢谢你的回答,我会检查链接看看我能做什么
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多