如何在Widget中添加WooCommerce添加到购物车按钮?

时间:2016-02-01 作者:Keyframe

我如何添加一个单独的WooCommerce小部件,带有“添加到购物车”按钮及其选项,以便在产品详细信息页面的侧栏中的任何位置显示它?

1 个回复
最合适的回答,由SO网友:Keyframe 整理而成
<?php
/*
Plugin Name: Keyframe Woocommerce Widget
Description: Keyframe Woocommerce Add To Cart Sidebar Widget
Author: Keyframe
Version: 1.0
*/

// Block direct requests
if ( !defined(\'ABSPATH\') )
die(\'-1\');


add_action( \'widgets_init\', function(){
 register_widget( \'N_Widget\' );
}); 

/**
* Adds N_Widget widget.
*/
class N_Widget extends WP_Widget {

/**
 * Register widget with WordPress.
 */
function __construct() {
    parent::__construct(
        \'N_Widget\', // Base ID
        __(\'N Widget\', \'text_domain\'), // Name
        array( \'description\' => __( \'N Sidebar Widget!\', \'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 ) {

    echo $args[\'before_widget\'];
    if ( ! empty( $instance[\'title\'] ) ) {
        echo $args[\'before_title\'] . apply_filters( \'widget_title\', $instance[\'title\'] ). $args[\'after_title\'];
    }

    global $product;
    do_action( \'woocommerce_\' . $product->product_type . \'_add_to_cart\'  );
    echo $args[\'after_widget\'];
}

/**
 * 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 = __( \'New title\', \'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 
}

/**
 * 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\'] = ( ! empty( $new_instance[\'title\'] ) ) ? strip_tags( $new_instance[\'title\'] ) : \'\';

    return $instance;
}

} // class N_Widget

相关推荐

My widgets do not save

每次我保存我的小部件并离开页面时,我的小部件都会消失。侧边栏已完全清空,不会保存任何更改。控制台或PHP日志中没有任何错误。如果我将小部件直接复制并保存在数据库中widgets_text, 它们将被显示,但我仍然无法在侧边栏中添加或删除任何内容。这只发生在我的右侧边栏上,左侧边栏工作正常,但它们都以相同的方式注册。这是我注册侧边栏的方式:function my_widgets_init() { register_sidebar( array ( \'name\'