File: //home4/cca63905/.trash/wp-content/themes/accesspress-store/inc/widgets/widget-product2.php
<?php
/**
* Widget Product 1
**/
add_action('widgets_init', 'register_product_widget2');
function register_product_widget2(){
register_widget('accesspress_store_product2');
}
if( !class_exists( 'accesspress_store_product2' ) ) :
class accesspress_store_product2 extends WP_Widget {
/**
* Register Widget with WordPress
**/
public function __construct() {
parent::__construct(
'accesspress_store_product2', 'AP: WooCommerce Product Category Banner', array(
'description' => esc_html__('This widgets show the Category Image its Description and Product of that Category', 'accesspress-store')
));
}
/**
* Helper function that holds widget fields
* Array is used in update and form functions
*/
private function widget_fields() {
$prod_type = array(
'right_align' => esc_html__('Right Align With Category Image', 'accesspress-store'),
'left_align' => esc_html__('Left Align With Category Image', 'accesspress-store'),
);
$taxonomy = 'product_cat';
$empty = 1;
$orderby = 'name';
$show_count = 0; // 1 for yes, 0 for no
$pad_counts = 0; // 1 for yes, 0 for no
$hierarchical = 1; // 1 for yes, 0 for no
$title = '';
$empty = 0;
$args = array(
'taxonomy' => $taxonomy,
'orderby' => $orderby,
'show_count' => $show_count,
'pad_counts' => $pad_counts,
'hierarchical' => $hierarchical,
'title_li' => $title,
'hide_empty' => $empty
);
$woocommerce_categories = array();
$woocommerce_categories_obj = get_categories($args);
$woocommerce_categories[''] = 'Select Product Category:';
foreach ($woocommerce_categories_obj as $category) {
$woocommerce_categories[$category->term_id] = $category->name;
}
$fields = array(
'product_type' => array(
'accesspress_store_widgets_name' => 'product_alignment',
'accesspress_store_widgets_title' => esc_html__('Select the Display Style (Image Alignment)', 'accesspress-store'),
'accesspress_store_widgets_field_type' => 'select',
'accesspress_store_widgets_field_options' => $prod_type
),
'product_category' => array(
'accesspress_store_widgets_name' => 'product_category',
'accesspress_store_widgets_title' => esc_html__('Select Product Category', 'accesspress-store'),
'accesspress_store_widgets_field_type' => 'select',
'accesspress_store_widgets_field_options' => $woocommerce_categories
),
);
return $fields;
}
public function widget($args, $instance){
extract($args);
$product_alignment = $instance['product_alignment'];
$product_category = $instance['product_category'];
$product_args = array(
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $product_category
)),
'posts_per_page' => '6'
);
?>
<section class="category_product">
<div class="ak-container">
<?php
echo wp_kses_post($before_widget);
?>
<div class="feature-cat-product-wrap">
<div class="feature-cat-image <?php echo esc_attr($product_alignment); ?>">
<?php
$thumbnail_id = get_term_meta($product_category, 'thumbnail_id', true);
if (!empty($thumbnail_id)) {
$image = wp_get_attachment_image_src($thumbnail_id, 'accesspress-prod-cat-size');
echo '<img src="' . esc_url($image[0]) . '" />';
}
?>
<div class="product-cat-desc">
<?php
$taxonomy = 'product_cat';
$terms = term_description( $product_category, $taxonomy );
$terms_name = get_term( $product_category, $taxonomy );
?>
<h3><?php echo esc_html($terms_name->name); ?></h3>
<div class="cat_desc">
<?php echo wp_kses_post($terms); ?>
</div>
</div>
</div>
<div class="feature-cat-product <?php echo esc_attr($product_alignment); ?>">
<?php
$prod_args = array(
'post_type' => 'product',
'tax_query' => array(array('taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $product_category
)),
'posts_per_page' => '6'
);
$product_query = new WP_Query($prod_args);
if($product_query->have_posts()):
$count = 1;
while($product_query->have_posts()):$product_query->the_post();
$image_id = get_post_thumbnail_id();
$image = wp_get_attachment_image_src($image_id, 'thumbnail', 'true');
?>
<div class="feature-prod-wrap wow flipInY" data-wow-delay="<?php echo absint($count); ?>s">
<?php wc_get_template_part( 'content', 'feat-product' ); ?>
</div>
<?php
$count+=0.5;
endwhile;
endif;
?>
</div>
</div>
<?php
echo wp_kses_post($after_widget);
?>
</div>
</section>
<?php
}
/**
* Sanitize widget form values as they are saved.
*
* @see WP_Widget::update()
*
* @param array $new_instance Values just sent to be saved.
* @param array $old_instance Previously saved values from database.
*
* @uses accesspress_store_widgets_updated_field_value() defined in widget-fields.php
*
* @return array Updated safe values to be saved.
*/
public function update($new_instance, $old_instance) {
$instance = $old_instance;
$widget_fields = $this->widget_fields();
// Loop through fields
foreach ($widget_fields as $widget_field) {
extract($widget_field);
// Use helper function to get updated field values
$instance[$accesspress_store_widgets_name] = accesspress_store_widgets_updated_field_value($widget_field, $new_instance[$accesspress_store_widgets_name]);
}
return $instance;
}
/**
* Back-end widget form.
*
* @see WP_Widget::form()
*
* @param array $instance Previously saved values from database.
*
* @uses accesspress_store_widgets_show_widget_field() defined in widget-fields.php
*/
public function form($instance) {
$widget_fields = $this->widget_fields();
// Loop through fields
foreach ($widget_fields as $widget_field) {
// Make array elements available as variables
extract($widget_field);
$accesspress_store_widgets_field_value = !empty($instance[$accesspress_store_widgets_name]) ? esc_attr($instance[$accesspress_store_widgets_name]) : '';
accesspress_store_widgets_show_widget_field($this, $widget_field, $accesspress_store_widgets_field_value);
}
}
}
endif;