Creează o pagină personalizată de administrare pentru tip de postare personalizat + taxonomii + meta

15 apr. 2012, 20:59:20
Vizualizări: 26.2K
Voturi: 11

Scriu un plugin care se bazează pe tipuri de postări personalizate, taxonomie nouă și câteva câmpuri personalizate.

Toate aceste date vor fi private (nu vor putea fi interogate sau căutate).

Aș dori să ofer utilizatorului o pagină de administrare pentru a adăuga și edita aceste date într-un mod mai prietenos.

De exemplu, tipul de postare personalizat va avea doar un titlu și câmpul pentru extras, o taxonomie și câmpurile personalizate.

Știu cum să adaug meta box-uri la un tip de postare personalizat, dar acest lucru nu îmi este suficient.

Aș dori să creez o interfață HTML complet personalizată care se va ocupa de adăugarea/salvarea/ștergerea tipului de postare personalizat și va gestiona taxonomia și meta-urile.

Pentru clarificare, știu deja cum să scriu un plugin normal și să gestionez opțiunile plugin-ului.

Nu știu cum pot cu acest plugin să:

  • Adaug un nou element de meniu în meniul de administrare WordPress
  • În acest element de meniu, să gestionez, cu o interfață personalizată, tipul de postare personalizat

Există vreun ghid care m-ar putea ajuta să realizez acest lucru?

7
Comentarii

Aș aprecia un motiv pentru votul negativ

Andrea Sciamanna Andrea Sciamanna
15 apr. 2012 23:13:33

aruncă o privire la http://wordpress.org/extend/plugins/wp-user-frontend/

Bainternet Bainternet
16 apr. 2012 09:43:18

Nainternet, se pare că nu am fost foarte clar în întrebarea mea. O voi actualiza corespunzător.

Andrea Sciamanna Andrea Sciamanna
16 apr. 2012 10:24:57

Am sugerat acel plugin deoarece îl poți folosi pentru a crea, actualiza și șterge CPT-uri, termeni de taxonomie și câmpuri personalizate din partea frontală, ceea ce practic este ceea ce dorești. Doar uită-te la codul său.

Bainternet Bainternet
16 apr. 2012 10:52:42

Bainternet, înțeleg punctul tău, dar deoarece al meu este deja un plugin, nu vreau ca utilizatorii să fie obligați să instaleze un alt plugin pentru ca al meu să funcționeze. Am nevoie de o soluție pe care o pot implementa în interiorul pluginului meu. De fapt, ceea ce am nevoie sunt doar câteva îndrumări care să mă ajute să obțin acest rezultat.

Andrea Sciamanna Andrea Sciamanna
16 apr. 2012 14:20:32

Încă o dată, ideea era să te uiți la codul plugin-ului și să vezi cum este realizat.

Bainternet Bainternet
16 apr. 2012 20:42:47

Încă o dată, Bainternet, caut un „how-to”, dacă există. Există multe plugin-uri care fac ceea ce am nevoie, dar fiecare într-un mod diferit. Îmi place să mă țin de un model, un standard sau ceva similar, așa cum fac deja (cât de mult pot) când scriu un plugin sau o temă.

Andrea Sciamanna Andrea Sciamanna
16 apr. 2012 21:10:53
Arată celelalte 2 comentarii
Toate răspunsurile la întrebare 3
0

Așa se poate realiza:

add_action('admin_menu' , 'add_to_cpt_menu'); 

function add_to_cpt_menu() {
    add_submenu_page('edit.php?post_type=name_of_post_type', 'Custom Post Type Admin', 'Setări Personalizate', 'edit_posts', basename(__FILE__), 'cpt_menu_function');
}   
1 mar. 2016 00:24:22
1

Va trebui să începeți să citiți despre API-ul de setări și opțiuni, iar apoi să integrați tipurile personalizate de postări (CPT) și taxonomiile în el.

Puteți începe de aici:

16 apr. 2012 00:34:22
Comentarii
0

Adăugați meniuri și submeniuri astfel:

add_action('admin_menu', 'custom_plugin_menu');
function custom_plugin_menu() {
    $page_title = 'Titlul Meniului Părinte';
    $menu_title = 'Titlul Meniului Părinte';
    $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 = 'Titlul Paginii Submeniu';
    $menu_title = 'Titlul Paginii Submeniu';
    $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);
}

în final:

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-ul submeniului 
            $submenu_file = 'edit-tags.php?taxonomy= your_taxonomy_name&post_type= custom_post_type_name';    // slug-ul submeniului
        }
    } 
    return $parent_file;
}

Sper că am introdus totul corect. Includeți orice alte condiții if în interiorul verificării taxonomiei și adăugați același lucru pentru alte tipuri de postări.

8 feb. 2021 02:10:15