Modifica dell'aspetto degli input di tassonomia personalizzati


14

Sto lavorando su un sito che utilizzerà alcune tassonomie personalizzate (per tipi di posta personalizzati). Ho scelto di rendere gerarchiche alcune tassonomie perché il metodo di immissione di valori (caselle di controllo) è più desiderabile per questo sito rispetto all'input in forma libera di tassonomie non gerarchiche. Tuttavia, ciò che mi piacerebbe davvero è poter utilizzare gli input dei pulsanti di opzione anziché le caselle di controllo. Inoltre, vorrei rimuovere il menu a discesa utilizzato per scegliere l'elemento principale nella tassonomia. immagine dello schermo

Sto andando nel modo sbagliato? Dovrei iniziare con tassonomie non gerarchiche e modificare invece i metodi di input su quelli? Sono completamente aperto agli input e risponderò volentieri a qualsiasi domanda o fornirò ulteriori informazioni se posso.


+1 Buona domanda. Sarebbe bello anche per un progetto a cui sto lavorando. Inoltre, la tassonomia personalizzata deve essere un menu a discesa anziché un elenco di "categorie".
Zack,

Sì, anche un menu a discesa sarebbe fantastico.
Travis Northcutt,


Invece di provare a modificare il metabox esistente, quello che potresti cercare di fare è rimuovere il metabox predefinito per la tassonomia data, quindi registrare il tuo per chiamare una funzione personalizzata che visualizza i termini in un gruppo radio, e questo si collegherebbe con il due collegamenti forniti sopra da Maugly.
t31os,

Risposte:


13

Certo, basta usare CSS e il 'admin_head'gancio per farlo scomparire. Credo che questo sia quello che stai cercando?

Voce della tassonomia gerarchica nella pagina dei post di WordPress senza il genitore
(fonte: mikeschinkel.com )

Aggiungi semplicemente quanto segue al functions.phpfile del tuo tema o al .phpfile di un plugin che potresti scrivere. Nota che ho incluso un 'init'hook per definire il tipo di post "Home" e la tassonomia "Bath" in modo che altri possano seguire più facilmente l'esempio. Nota inoltre che se la tua tassonomia è denominata Baths " dovrai cambiare il selettore CSS in modo che sia #newbaths_parentinvece di #newbath_parent:

add_action('admin_head','remove_bath_parents');
function remove_bath_parents() {
  global $pagenow;
  if (in_array($pagenow,array('post-new.php','post.php'))) { // Only for the post add & edit pages
    $css=<<<STYLE
<style>
<!--
#newbath_parent {
  display:none;
}
-->
</style>
STYLE;
    echo $css;
  }
}
add_action('init','add_homes_and_baths');
function add_homes_and_baths() {
  register_post_type('home',
    array(
      'label'           => 'Homes',
      'public'          => true,
      'rewrite'         => array('slug' => 'homes'),
      'hierarchical'    => false,
    )
  );
  register_taxonomy('bath', 'home', array(
    'hierarchical'    => true,
    'label'           => 'Baths',
    'rewrite'         => array('slug' => 'baths' ),
    )
  );
}

AGGIORNARE

Quindi sembra che mi sia sfuggito il pulsante di opzione della domanda. Sfortunatamente WordPress non lo rende facile, ma puoi realizzarlo utilizzando il buffering dell'output PHP (tramite le funzioni ob_start()e ob_get_clean().) Basta trovare un hook prima che il metabox sia output ( 'add_meta_boxes') e un hook dopo che sia output ( 'dbx_post_sidebar') e quindi cercare il catturato HTML per 'checkbox'e sostituirlo con 'radio', echo sullo schermo e il gioco è fatto! Il codice segue:

add_action('add_meta_boxes','mysite_add_meta_boxes',10,2);
function mysite_add_meta_boxes($post_type, $post) {
  ob_start();
}
add_action('dbx_post_sidebar','mysite_dbx_post_sidebar');
function mysite_dbx_post_sidebar() {
  $html = ob_get_clean();
  $html = str_replace('"checkbox"','"radio"',$html);
  echo $html;
}

E le prove:

Schermata che mostra le tassonomie utilizzando i pulsanti di opzione
(fonte: mikeschinkel.com )


1
"Guarda mamma, nessun campo genitore!" Mike, mi fai ridere! : D
Michal Mau,

@maugly - Questo è il mio valore predefinito. : D
MikeSchinkel,

@haha - Sono contento che ti piaccia. :)
MikeSchinkel,

Fantastico, come sempre.
Travis Northcutt,

1
@tnorthcutt - Francamente, consiglierei di scrivere il tuo metabox. Questo è quello che ho fatto e non è davvero difficile per questo. Basta fare una vista sorgente e partita <input>e <select>nomi e non dovrai nemmeno fare nulla per catturare la tassonomia; WordPress lo farà per te. OPPURE, utilizzare un campo personalizzato e bypassare la tassonomia che potrebbe essere eccessiva per questo.
MikeSchinkel,

2

oppure, se sei pigro, puoi utilizzare questo plug-in: UI tassonomia valore singolo

(Avrei preferito aggiungerlo come commento alla risposta di Mike poiché fa principalmente la stessa cosa, ma non posso ancora aggiungere commenti)


Purtroppo nessun aggiornamento in 2 anni :( Questo è davvero qualcosa che WP dovrebbe aggiungere il supporto di base perché molte persone userebbero tassonomie di un termine per oggetto se fosse un'opzione (cioè usare tassonomie invece di meta quando le prestazioni della query sono importanti).
jerclarke,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.