Eliminare Metabox Taxonomie Personalizată din Ecranul Tipului de Postare Personalizat

11 iun. 2013, 21:49:27
Vizualizări: 30K
Voturi: 22

Am două taxonomii ierarhice personalizate, fiecare pe un tip de postare personalizat corespunzător. Aș dori să elimin metabox-ul pentru fiecare dintre ele din ecranul de editare al tipului de postare.

Am citit eliminare metabox taxonomie personalizată din tipul de postare personalizat și Cum elimini un metabox de taxonomie ierarhică de tip Categorie? dar tot sunt blocat.

Funcția pe care o folosesc este:

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'partner_typediv', 'partners', 'normal' );
    remove_meta_box( 'person_typediv', 'people', 'normal' );
}
add_action( 'admin_menu' , 'remove_taxonomies_metaboxes' );

Am eliminat prefixele pentru post_types și custom_taxonomies, dar atât. Am încercat să folosesc hook-ul admin_menu și hook-ul add_meta_boxes recomandat de Codex. Am încercat atât normal cât și side pentru al treilea parametru.

Funcția de mai sus este localizată într-un fișier mu-plugins sub funcția care înregistrează tipurile de postări și taxonomiile.


EDITARE: A fost o greșeală de scriere în funcția register_taxonomy. Sunt o persoană oribilă. Mulțumesc tuturor pentru ajutor. Tot am învățat câteva lucruri!

2
Comentarii

chiar și cu 'show_ui' => false?

JMau JMau
11 iun. 2013 21:59:45

Vreau ca interfața să rămână în meniu, doar să nu apară când editez un articol.

mrwweb mrwweb
12 iun. 2013 00:23:23
Toate răspunsurile la întrebare 5
3
68

Dacă înregistrezi manual taxonomia personalizată prin intermediul funcției register_taxonomy, poți transmite argumente pentru a controla locul în care apare metabox-ul.

În exemplul de mai jos, setarea parametrului show_ui la false va elimina complet metabox-ul de la ecranul de editare, ecranul de editare rapidă și meniul de administrare. Dar dacă setezi show_ui la true, poți obține un control mai detaliat folosind argumentele show_in_quick_edit și meta_box_cb (setarea acestuia din urmă la false ascunde metabox-ul pe ecranul de editare a CPT-ului, așa cum este dorit).

register_taxonomy( 'your_custom_taxonomy', array( 'your_custom_post_type' ), $args );
$args = array(
    'show_ui'                    => true,
    'show_in_quick_edit'         => false,
    'meta_box_cb'                => false,
);
26 ian. 2016 20:45:10
Comentarii

Funcționează. Păstrează meniul de administrare și elimină taxonomia personalizată în formularul de adăugare nou al tipului de postare personalizat. Mulțumesc.

Dũng IT Dũng IT
10 iun. 2016 13:01:47

Mulțumesc! Căutam 'meta_box_cb'=>false pentru a-l ascunde în post-new, unde setarea lui la null afișează doar versiunea implicită WordPress.

Ryan H Ryan H
1 apr. 2017 16:15:31

Simplu și elegant.

Travis van der Font Travis van der Font
6 sept. 2018 12:45:08
5

Spuneți că doriți să eliminați cutiile de pe ecranul de editare post, nu de pe ecranul tipului de postare, deci presupunând că ar trebui să puteți înregistra taxonomia dumneavoastră doar pentru tipurile de postări cărora doriți să le fie aplicată și să evitați acest lucru cu totul. Exemplul din Codex înregistrează taxaonomia exemplu doar pentru tipul de postare book astfel:

register_taxonomy( 'genre', array( 'book' ), $args );

Cred că aceasta este soluția de care aveți nevoie, dar nu ați postat niciun cod de înregistrare pentru tipurile de postări sau taxonomii.

Dacă ați creat cutiile meta personalizate - adică aceste cutii nu sunt cele implicite - atunci modalitatea de a evita această problemă este să înregistrați cutiile meta pe cârlige specifice tipului de postare:

do_action('add_meta_boxes_' . $post_type, $post);

Sau urmând exemplul de mai sus:

add_action('add_meta_boxes_book', 'your-box-callback');

Una dintre aceste abordări ar trebui să rezolve problema pentru dumneavoastră. Nu cred că ar trebui să fie nevoie să utilizați remove_meta_box deloc.

Dacă încercați să eliminați cutiile meta de la tipul de postare la care sunt înregistrate, aceasta funcționează (din nou urmând exemplul din Codex):

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'genrediv', 'book', 'side' );
}
add_action( 'add_meta_boxes_book' , 'remove_taxonomies_metaboxes' );

Sunt destul de sigur că admin_menu este prea devreme, dar nu am verificat acest lucru. add_metaboxes funcționează și pentru mine. Nu știu de ce nu funcționează pentru dumneavoastră.

11 iun. 2013 22:19:36
Comentarii

Scuze pentru neclaritate. Mă refeream la ecranul Post Type. Fiecare taxonomie este înregistrată doar pentru un singur tip de postare personalizată. Am încercat să folosesc acel hook add_meta_boxes_* pe scurt, dar voi încerca câteva variații ale acestuia (deși folosesc cutiile meta generate automat).

mrwweb mrwweb
12 iun. 2013 00:25:52

Atunci ultima opțiune din răspuns ar trebui să funcționeze. Am testat-o. Cutia chiar dispare. Nu pot spune că înțeleg logica de a avea taxonomiile fără cutii însă.

s_ha_dum s_ha_dum
12 iun. 2013 00:28:48

(Vezi editarea de mai sus. A fost o greșeală de tastare. E vina mea... Mulțumesc pentru ajutor). Pentru a răspunde la întrebarea ta, afișez taxonomiile cu un Advanced Custom Field (este o interfață mai bună pentru utilizatorii site-ului).

mrwweb mrwweb
12 iun. 2013 00:34:00

Ultimul tău exemplu m-a îndreptat în direcția corectă, dar iată ce a funcționat pentru mine: add_action( 'admin_menu', 'remove_taxonomies_metaboxes' );

Marcos Buarque Marcos Buarque
12 dec. 2017 19:12:24

Am constatat că această sintaxă nu funcționează cu versiunea actuală de WordPress, verifică acest răspuns pentru o soluție funcțională.

Davey Davey
2 mai 2018 12:06:36
3

Taxonomiile înregistrează implicit un meta_box folosind un ID de tip tagsdiv-xxx. Folosind ACF pentru gestionarea taxonomiilor personalizate, casetele meta implicite devin inutile. Am încercat, cu succes, acest cod:

      function remove_cuttax_metaboxes() {
           $post_type = 'post';
           $taxonomy = 'custom_taxonomy_slug';
           remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );

       }
       add_action( 'admin_menu' , 'remove_cuttax_metaboxes', 100 );

Prioritatea mai mică (100) permite acestui cod să funcționeze chiar dacă taxonomiile sunt create de un plugin precum CPT-UI.

12 mar. 2018 12:07:37
Comentarii

tagsdiv ar trebui să aibă liniuță la sfârșit:

remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );

Greg Haygood Greg Haygood
2 aug. 2019 04:33:26

Aceasta nu mai funcționează în Gutenberg.

Sudar Sudar
19 nov. 2020 10:13:30

Începând cu WordPress 5.6, 'tagsdiv-' nu mai este valid. Folosește următoarea combinație pentru a crea id-ul corespunzător: remove_meta_box( $taxonomy . 'div', $post_type, 'side' );

Talha Imam Talha Imam
23 feb. 2021 16:05:28
0

Încearcă această soluție sau adaugă 'meta_box_cb' => false în array-ul $args al funcției register_taxonomy

add_action('init', function () {
    register_taxonomy('your_taxonomy', 'your_post_type', [
        'labels' => [
            // opțiuni pentru etichete
        ],
        // alte opțiuni
        'show_ui' => true,
        'show_in_quick_edit' => false,
        'meta_box_cb' => false,        // doar adaugă această linie
    ]);
});
8 feb. 2024 14:52:26
1

Am încercat soluțiile de mai sus pentru a ascunde taxonomia, dar nu au funcționat pentru mine. În final, am găsit o soluție.

Adăugați acest cod în fișierul functions.php al temei dumneavoastră.

function Cc_Gutenberg_Register_files() 
{
    //fișier script personalizat
    wp_register_script(
        'cc-block-script',
        get_stylesheet_directory_uri() .'/js/block-script.js',
        array( 'wp-blocks', 'wp-edit-post' )
    );
    // înregistrează scriptul editorului de blocuri
    register_block_type( 'cc/ma-block-files', array(
        'editor_script' => 'cc-block-script'
    ) );     
}
add_action('init', 'Cc_Gutenberg_Register_files');

Pentru block-script.js, puteți folosi acest cod.

wp.data.dispatch( 'core/edit-post').removeEditorPanel( 'taxonomy-panel-category' ) ; // Ascunde Categoria implicită
wp.data.dispatch( 'core/edit-post').removeEditorPanel( 'taxonomy-panel-TAXONOMY-NAME' ) ; // Ascunde Taxonomia personalizată
9 nov. 2021 07:26:04
Comentarii

remove_meta_box( $id, $screen, $context ) elimină într-adevăr cutiile meta din ecranul editorului "clasic"; nu funcționează pentru editorul pe blocuri Gutenberg.

Soluția ta este corectă pentru eliminarea cutiilor meta de taxonomie din editorul pe blocuri.

Acest lucru este menționat aici: https://developer.wordpress.org/reference/functions/remove_meta_box/#comment-5005

Pea Pea
5 sept. 2023 07:10:29