WC_Widget_Brand_Nav::widget
Widget function.
Метод класса: WC_Widget_Brand_Nav{}
Хуки из метода
Возвращает
null. Ничего (null).
Использование
$WC_Widget_Brand_Nav = new WC_Widget_Brand_Nav(); $WC_Widget_Brand_Nav->widget( $args, $instance );
- $args(массив) (обязательный)
- Arguments.
- $instance(массив) (обязательный)
- Widget instance.
Заметки
- Смотрите: WP_Widget
Код WC_Widget_Brand_Nav::widget() WC Widget Brand Nav::widget WC 10.4.2
public function widget( $args, $instance ) {
$attribute_array = array();
$attribute_taxonomies = wc_get_attribute_taxonomies();
if ( ! empty( $attribute_taxonomies ) ) {
foreach ( $attribute_taxonomies as $tax ) {
$taxonomy_name = wc_attribute_taxonomy_name( $tax->attribute_name );
if ( taxonomy_exists( $taxonomy_name ) ) {
$attribute_array[] = $taxonomy_name;
}
}
}
if ( ! is_post_type_archive( 'product' ) && ! is_tax( array_merge( $attribute_array, array( 'product_cat', 'product_tag', 'product_brand' ) ) ) ) {
return;
}
$_chosen_attributes = WC_Query::get_layered_nav_chosen_attributes();
$current_term = $attribute_array && is_tax( $attribute_array ) ? get_queried_object()->term_id : '';
$current_tax = $attribute_array && is_tax( $attribute_array ) ? get_queried_object()->taxonomy : '';
/**
* Filter the widget's title.
*
* @since 9.4.0
*
* @param string $title Widget title
* @param array $instance The settings for the particular instance of the widget.
* @param string $woo_widget_idbase The widget's id base.
*/
$title = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
$taxonomy = 'product_brand';
$display_type = isset( $instance['display_type'] ) ? $instance['display_type'] : 'list';
if ( ! taxonomy_exists( $taxonomy ) ) {
return;
}
// Get only parent terms. Methods will recursively retrieve children.
$terms = get_terms(
array(
'taxonomy' => $taxonomy,
'hide_empty' => true,
'parent' => 0,
)
);
if ( empty( $terms ) ) {
return;
}
ob_start();
$this->widget_start( $args, $instance );
if ( 'dropdown' === $display_type ) {
$found = $this->layered_nav_dropdown( $terms, $taxonomy );
} else {
$found = $this->layered_nav_list( $terms, $taxonomy );
}
$this->widget_end( $args );
// Force found when option is selected - do not force found on taxonomy attributes.
if ( ! is_tax() && is_array( $_chosen_attributes ) && array_key_exists( $taxonomy, $_chosen_attributes ) ) {
$found = true;
}
if ( ! $found ) {
ob_end_clean();
} else {
echo ob_get_clean(); // phpcs:ignore WordPress.Security.EscapeOutput
}
}