订阅必须在当天之前开始,我可以在哪里设置时间

时间:2015-10-21 14:58:39

标签: wordpress woocommerce subscriptions woothemes

我安装了Woo-commerce 我安装了Woo-commerce订阅 我安装了Woo-commerce条纹结账。

我完成了结帐程序,并收到错误“订阅开始日期必须在当天之前”

enter image description here

我已经完成了所有设置,我看不到任何可以设置开始日期的选项,它意味着在订阅开始时开始。

我已经重新安装了所有东西并且确保了所有内容,但我仍然遇到同样的错误。

这是我配置的副本。

enter image description here

我曾尝试使用谷歌搜索所有内容,但我以前都看不到这个错误。

我尝试更改控制板中的UTC时钟 - >设置 - >常规但我仍然遇到同样的错误。

以下是有问题的代码

   function wcs_create_subscription( $args = array() ) {

$order = ( isset( $args['order_id'] ) ) ? wc_get_order( $args['order_id'] ) : null;

$default_args = array(
    'status'             => '',
    'order_id'           => 0,
    'customer_note'      => null,
    'customer_id'        => ( ! empty( $order ) ) ? $order->get_user_id() : null,
    'start_date'         => ( ! empty( $order ) ) ? $order->order_date : current_time( 'mysql', true ),
    'created_via'        => ( ! empty( $order ) ) ? $order->created_via : '',
    'order_version'      => ( ! empty( $order ) ) ? $order->order_version : WC_VERSION,
    'currency'           => ( ! empty( $order ) ) ? $order->order_currency : get_woocommerce_currency(),
    'prices_include_tax' => ( ! empty( $order ) ) ? ( ( $order->prices_include_tax ) ? 'yes' : 'no' ) : get_option( 'woocommerce_prices_include_tax' ),
);

$args              = wp_parse_args( $args, $default_args );
$subscription_data = array();

// validate the start_date field
if ( ! is_string( $args['start_date'] ) || false === wcs_is_datetime_mysql_format( $args['start_date'] ) ) {
    return new WP_Error( 'woocommerce_subscription_invalid_start_date_format', __( 'Invalid date. The date must be a string and of the format: "Y-m-d H:i:s".', 'woocommerce-subscriptions' ) );
} else if ( strtotime( $args['start_date'] ) > current_time( 'timestamp', true ) ) {
    return new WP_Error( 'woocommerce_subscription_invalid_start_date', __( 'Subscription start date must be before current day', 'woocommerce-subscriptions' ) );
}

2 个答案:

答案 0 :(得分:1)

直到修补此更改此行(对我来说是119行)

} else if ( strtotime( $args['start_date'] ) > current_time( 'timestamp', true ) ) {

到这个

} else if ( strtotime( $args['start_date'].' UTC' ) > current_time( 'timestamp', true ) ) {

来自Woo Commerce类的$ order-> order_date的值不包含时区格式,因此当此时间与函数current_time进行比较时,该值包含来自我的服务器当前时区的未来日期。

答案 1 :(得分:0)

在Wordpress常规设置中,将您的时间更改为UTC(+或 - #)以等于当前时间,它应该可以解决问题。至少它刚刚为我做了......