Как я могу связать пользовательский тип сообщения из подменю администратора в WordPress? - PullRequest
0 голосов
/ 28 июня 2018

Я создал собственный тип записи и скрыл его

с использованием 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

В любом случае, я могу удалить этот префикс только из одного подменю?

Я работаю над ООП вот как я добавляю подменю

  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 );

  }

если я не достаточно ясно, пожалуйста, дайте мне знать спасибо

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Вот как я решаю проблему, для тех, у кого такая же проблема надеюсь, что это поможет

пользовательский тип сообщения

      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'],
      ]


    ];
  }

enter image description here

0 голосов
/ 28 июня 2018

Прежде всего нет смысла устанавливать public на true, если впоследствии вы сбрасываете каждый из его эффектов в параметрах (https://codex.wordpress.org/Function_Reference/register_post_type).

Второе: вы не можете использовать этот пункт меню, потому что он определен следующим образом:

$ menu_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, обычно это лучший способ сделать его редактируемым по параметрам.

...