it-swarm.com.de

Ändern des Erscheinungsbilds benutzerdefinierter Taxonomieeingaben

Ich arbeite an einer Site, die einige benutzerdefinierte Taxonomien verwendet (für benutzerdefinierte Beitragstypen). Ich habe mich dafür entschieden, einige Taxonomien hierarchisch zu gestalten, da die Methode zur Eingabe von Werten (Kontrollkästchen) für diese Site wünschenswerter ist als die formlose Eingabe von nicht hierarchischen Taxonomien. Was ich jedoch wirklich möchte, ist die Möglichkeit, Optionsfelder anstelle von Kontrollkästchen zu verwenden. Außerdem möchte ich das Dropdown-Menü entfernen, mit dem das übergeordnete Element in der Taxonomie ausgewählt wird. screenshot

Gehe ich das falsch an? Sollte ich mit nicht hierarchischen Taxonomien beginnen und stattdessen die Eingabemethoden für diese ändern? Ich bin völlig offen für Beiträge und werde gerne alle Fragen beantworten oder weitere Informationen liefern, wenn ich kann.

14

Klar, benutze einfach CSS und den 'admin_head'-Haken, um es verschwinden zu lassen. Ich glaube, das ist was Sie suchen?

 Hierarchical taxonomy entry on WordPress post page without the parent 
(Quelle: mikeschinkel.com )

Fügen Sie einfach Folgendes zur functions.php-Datei Ihres Themas oder zu einer .php-Datei eines Plugins hinzu, das Sie möglicherweise schreiben. Beachten Sie, dass ich einen 'init'-Haken eingefügt habe, um den Beitragstyp "Home" und die Taxonomie "Bath" zu definieren, damit andere dem Beispiel leichter folgen können. Beachten Sie auch, dass Sie, wenn Ihre Taxonomie Baths " heißt, den CSS-Selektor so ändern müssen, dass er #newbaths_parent anstelle von #newbath_parent lautet:

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' ),
    )
  );
}

AKTUALISIEREN

Also habe ich anscheinend das Optionsfeld Teil der Frage verpasst. Leider macht WordPress das nicht einfach, aber Sie können es mit PHP Output Buffering (über die Funktionen ob_start() und ob_get_clean().) Tun Finden Sie einen Haken, bevor die Metabox ausgegeben wird ('add_meta_boxes') und einen Haken, nachdem sie ausgegeben wurde ('dbx_post_sidebar') und durchsuchen Sie den erfassten HTML-Code nach 'checkbox' und ersetzen Sie ihn durch 'radio'. Code folgt:

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

Und die Beweise:

 Screenshot showing taxonomies using radio buttons 
(Quelle: mikeschinkel.com )

13
MikeSchinkel

oder, wenn Sie faul sind, können Sie dieses Plugin verwenden: Single Value Taxonomy UI

(Ich hätte das eher als Kommentar zu Mikes Antwort hinzugefügt, da es meistens dasselbe tut - aber ich kann noch keine Kommentare hinzufügen)

2
pax