/var/www/(Del)hsihk.com/wp-content/themes/flatsome/inc/widgets/upsell-widget.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php 
/**
 * Adds Upsell_Widget.
 */

function register_upsell_widget() {
    
register_widget'Upsell_Widget' );
}
add_action'widgets_init''register_upsell_widget' );

class 
Upsell_Widget extends WP_Widget {

    
/**
     * Register widget with WordPress.
     */
    
public function __construct() {
        
parent::__construct(
             
'upsell_widget'// Base ID
            
'Flatsome Upsell Products'// Name
            
array( 'description' => __'Add upsell products to product page''text_domain' ), ) // Args
        
);
    }

    
/**
     * Front-end display of widget.
     *
     * @see WP_Widget::widget()
     *
     * @param array $args     Widget arguments.
     * @param array $instance Saved values from database.
     */
    
public function widget$args$instance ) {
        
extract$args );
        
$title apply_filters'widget_title'$instance['title'] );
        global 
$product$woocommerce$woocommerce_loop;

        
$upsells $product->get_upsells();
        if ( 
sizeof$upsells ) == ) return;

        
$meta_query $woocommerce->query->get_meta_query();

        
$args = array(
            
'post_type'           => 'product',
            
'ignore_sticky_posts' => 1,
            
'no_found_rows'       => 1,
            
'posts_per_page'      => 9,
            
'orderby'             => 'rand',
            
'post__in'            => $upsells,
            
'post__not_in'        => array( $product->id ),
            
'meta_query'          => $meta_query
        
);

        
$products = new WP_Query$args );

        echo 
$before_widget;
        

        if (
$products->have_posts()) :

        if ( ! empty( 
$title ) )
        echo 
$before_title $title $after_title;
?>
        <ul class="large-block-grid-2 up-sell">
        <?php while ( $products->have_posts() ) : $products->the_post(); ?>
                <?php woocommerce_get_template_part'content''product-small' ); ?>
        <?php endwhile; // end of the loop. ?>
        </ul>
        <?php
        
// Reset the global $the_post as this query will have stomped on it
        
wp_reset_postdata();

        endif;
        echo 
$after_widget;
    }

    
/**
     * 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.
     *
     * @return array Updated safe values to be saved.
     */
    
public function update$new_instance$old_instance ) {
        
$instance = array();
        
$instance['title'] = strip_tags$new_instance['title'] );

        return 
$instance;
    }

    
/**
     * Back-end widget form.
     *
     * @see WP_Widget::form()
     *
     * @param array $instance Previously saved values from database.
     */
    
public function form$instance ) {
        if ( isset( 
$instance'title' ] ) ) {
            
$title $instance'title' ];
        }
        else {
            
$title __'Complete the look''text_domain' );
        }
        
?>
        <p>
        <label for="<?php echo $this->get_field_id'title' ); ?>"><?php _e'Title:' ); ?></label> 
        <input class="widefat" id="<?php echo $this->get_field_id'title' ); ?>" name="<?php echo $this->get_field_name'title' ); ?>" type="text" value="<?php echo esc_attr$title ); ?>" />
        </p>
        <?php 
    
}

// class Foo_Widget