Verwenden von wp_dropdown_categories in Widgetoptionen

Ich habe ein Produktsuche-Widget, wenn Sie bestimmte Produkte auswählen, wird ein verstecktes Feld angezeigt. Ich möchte eine benutzerdefinierte Kategorie in meinen Widget-Optionen festlegen, die dann zur Anzeige meines versteckten Feldes verwendet wird.

Ich habe das Frontend 100% arbeiten, wenn ich die Eltern category_id manuell zu meinem Code hinzufügen. Jetzt muss ich nur die Kategorieoption in meinem Backend einstellen.

Dies ist, was ich derzeit habe, aber es funktioniert nicht in dem Sinne, dass es nicht die Auswahl speichert, die gemacht wird. Ich habe das Suchformular ausgelassen, weil es keine Widgetoptionen verwendet.

class Equipment_Search extends WP_Widget { function Equipment_Search() { $widget_ops = array( 'classname' => 'agriquip', 'description' => __('Displays the Equipment Search Form', 'agriquip') ); $control_ops = array( 'width' => 200, 'height' => 350, 'id_base' => 'agriquip-widget' ); $this->WP_Widget( 'agriquip-widget', __('Equipment Search', 'agriquip'), $widget_ops, $control_ops ); } function widget( $args, $instance ) { extract( $args ); $title = apply_filters('widget_title', $instance['title'] ); $tract_id = isset( $instance['exc_equipment_cat'] ) ? $instance['exc_equipment_cat'] : false; $tract = wp_list_pluck(get_terms('exc_equipment_cat', array('parent' => 3)), 'slug'); $tractparent = get_term_by('id','3', 'exc_equipment_cat'); $tractparent = $tractparent->slug; echo $before_widget; echo $after_widget; } function update( $new_instance, $old_instance ) { $instance = $old_instance; //Strip tags from title and name to remove HTML $instance['title'] = strip_tags( $new_instance['title'] ); $instance['exc_equipment_cat'] = $new_instance['exc_equipment_cat'] ? 1 : 0; return $instance; } function form( $instance ) { //Set up some default widget settings. $defaults = array( 'title' => __('Equipment Search', 'agriquip'), 'exc_equipment_cat' => '-1'); $instance = wp_parse_args( (array) $instance, $defaults ); ?> 

<label for="get_field_id( 'title' ); ?>"> <input id="get_field_id( 'title' ); ?>" name="get_field_name( 'title' ); ?>" value="" class="widefat" />

'exc_equipment_cat', 'name' => $this->get_field_name('exc_equipment_cat'), 'show_count' => 1, 'orderby' => 'name', 'hierarchical' => true, 'echo' => 0, 'depth' => 1, 'show_option_none' => 'Select Category', 'selected' => (int)$instance['exc_equipment_cat'], ); wp_dropdown_categories(apply_filters('widget_categories_dropdown_args', $dropdown_args)); $select = wp_dropdown_categories(apply_filters('widget_categories_dropdown_args', $dropdown_args)); $select = preg_replace("#]*)>#", "", $select); echo $select; ?>
<?php }

Solutions Collecting From Web of "Verwenden von wp_dropdown_categories in Widgetoptionen"

Ich habe es 🙂 Dank dafür

 function update( $new_instance, $old_instance ) { $instance = $old_instance; //Strip tags from title and name to remove HTML $instance['title'] = strip_tags( $new_instance['title'] ); $instance['kwtax'] = strip_tags( $new_instance['kwtax'] ); return $instance; } function form( $instance ) { //Set up some default widget settings. $defaults = array( 'title' => __('Equipment Search', 'agriquip'), 'kwtax' => ''); $instance = wp_parse_args( (array) $instance, $defaults ); ?> 

Sie können die integrierte WP-function verwenden, siehe Code unten.

  < ?php $args = array( 'name' => $this->get_field_name('category'), 'show_option_none' => __( 'Select category' ), 'show_count' => 1, 'orderby' => 'name', 'echo' => 0, 'selected' => $category, 'class' => 'widefat' ); echo wp_dropdown_categories($args); ?> 

Danke, HaneD.

Ihr Beispiel ist wahrscheinlich das einzige Beispiel, das ich finden konnte, das funktioniert. Wenn jemand anderes es zur Arbeit bringen möchte, ohne eine benutzerdefinierte Kategorie zu erstellen, versuchen Sie Folgendes zu ersetzen:

 < ?php foreach(get_terms('exc_equipment_cat','parent=0&hide_empty=0') as $term) { ?> 

mit

 < ?php foreach(get_terms('category','parent=0&hide_empty=0') as $term) { ?> 

Sie waren so nah dran, Sie mussten nur Ihre Kategorie-ID aus der Update-Methode finden. Wie so:

  $instance['exc_equipment_cat'] = filter_var($new_instance['exc_equipment_cat'], FILTER_SANITIZE_NUMBER_INT); 

Oder wie auch immer Sie die vom Update kommende Nummer bereinigen möchten.

Und das gibt Ihnen die Kategorie oder Taxonomie-ID.