Создание пользовательской страницы администратора для произвольного типа записи + таксономии + метаданные

15 апр. 2012 г., 20:59:20
Просмотры: 26.2K
Голосов: 11

Я пишу плагин, который основан на произвольных типах записей, новой таксономии и нескольких пользовательских полях.

Все эти данные будут приватными (не доступны для запросов или поиска).

Я хотел бы предоставить пользователю страницу администратора для добавления и редактирования этих данных более удобным способом.

Например, произвольный тип записи будет иметь только заголовок и поле отрывка, одну таксономию и пользовательские поля.

Я знаю, как добавлять мета-боксы к произвольному типу записи, но этого мне недостаточно.

Я хотел бы создать полностью пользовательский HTML-интерфейс, который будет отвечать за добавление/сохранение/удаление произвольного типа записи и управлять таксономией и метаданными.

Для ясности, я уже знаю, как написать обычный плагин и управлять его настройками.

Я не знаю, как с помощью этого плагина:

  • Добавить новый пункт меню в административное меню WordPress
  • В этом пункте меню управлять через пользовательский интерфейс произвольным типом записи

Есть ли какие-то руководства, которые могли бы помочь мне достичь этого?

7
Комментарии

Было бы неплохо узнать причину минуса

Andrea Sciamanna Andrea Sciamanna
15 апр. 2012 г. 23:13:33

посмотрите http://wordpress.org/extend/plugins/wp-user-frontend/

Bainternet Bainternet
16 апр. 2012 г. 09:43:18

Nainternet, похоже, я недостаточно четко сформулировал свой вопрос. Я обновлю его соответствующим образом.

Andrea Sciamanna Andrea Sciamanna
16 апр. 2012 г. 10:24:57

Я предложил этот плагин, потому что с его помощью можно создавать, обновлять и удалять пользовательские типы записей (CPT), термины таксономий и пользовательские поля прямо из фронтенда, что, по сути, вам и нужно. Просто изучите его код.

Bainternet Bainternet
16 апр. 2012 г. 10:52:42

Bainternet, я понимаю вашу точку зрения, но поскольку мой код уже является плагином, я не хочу, чтобы пользователи были вынуждены устанавливать ещё один плагин для работы моего. Мне нужно решение, которое я могу реализовать внутри своего плагина. Фактически мне нужны лишь некоторые рекомендации, которые помогут мне достичь этого результата.

Andrea Sciamanna Andrea Sciamanna
16 апр. 2012 г. 14:20:32

Ещё раз, идея была в том, чтобы вы посмотрели код плагина и увидели, как это реализовано.

Bainternet Bainternet
16 апр. 2012 г. 20:42:47

Еще раз, Bainternet, я ищу "руководство", если оно существует. Есть множество плагинов, которые делают то, что мне нужно, но каждый делает это по-своему. Я предпочитаю придерживаться паттерна, стандарта или чего-то подобного, как я уже делаю (насколько это возможно) при написании плагина или темы.

Andrea Sciamanna Andrea Sciamanna
16 апр. 2012 г. 21:10:53
Показать остальные 2 комментариев
Все ответы на вопрос 3
0

Вот как это можно сделать:

add_action('admin_menu' , 'add_to_cpt_menu'); 

function add_to_cpt_menu() {
    add_submenu_page('edit.php?post_type=name_of_post_type', 'Настройки типа записи', 'Пользовательские настройки', 'edit_posts', basename(__FILE__), 'cpt_menu_function');
}   
1 мар. 2016 г. 00:24:22
1

Вам нужно начать изучение API настроек и опций, а затем интегрировать в него свои пользовательские типы записей (CPT) и таксономии.

Вот несколько полезных материалов для старта:

16 апр. 2012 г. 00:34:22
Комментарии

http://codex.wordpress.org/Administration_Menus

Wyck Wyck
16 апр. 2012 г. 17:55:25
0

Добавьте меню и подменю следующим образом:

add_action('admin_menu', 'custom_plugin_menu');
function custom_plugin_menu() {
    $page_title = 'Заголовок родительского меню';
    $menu_title = 'Заголовок родительского меню';
    $capability = 'manage_options';
    $menu_slug = 'parent_menu_slug';
    $function = 'whatever_for_main_page_function';
    $icon_url = 'dashicons-admin-generic';
    $position = 4;
    add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position);

    $parent_slug = 'parent_menu_slug';
    $page_title = 'Заголовок страницы подменю';
    $menu_title = 'Заголовок страницы подменю';
    $capability = 'manage_options';
    $menu_slug = 'edit-tags.php?taxonomy=your_taxonomy_name&post_type=custom_post_type_name';
    $function = null;
    $position = null;
    add_submenu_page($parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function, $position);
}

И наконец:

add_filter('parent_file', 'menu_highlight');    
function menu_highlight($parent_file) {
    global $plugin_page, $submenu_file, $post_type, $taxonomy;
    if ('custom_post_type_name' == $post_type) {
        if ($taxonomy == 'your_taxonomy_name') {
            $plugin_page = 'edit-tags.php?taxonomy= your_taxonomy_name&post_type= custom_post_type_name'; // slug подменю 
            $submenu_file = 'edit-tags.php?taxonomy= your_taxonomy_name&post_type= custom_post_type_name';    // slug подменю
        }
    } 
    return $parent_file;
}

Надеюсь, я всё правильно указал. Вложите дополнительные условия if внутрь проверки таксономии и добавьте аналогичные для других типов записей.

8 февр. 2021 г. 02:10:15