За последние 24 часа нас посетили 24460 программистов и 1674 робота. Сейчас ищут 1563 программиста ...

Помогите поправить шорткод [woocommerce_checkout]

Тема в разделе "Wordpress", создана пользователем DjSan, 24 мар 2016.

  1. DjSan

    DjSan Новичок

    С нами с:
    24 мар 2016
    Сообщения:
    25
    Симпатии:
    0
    Помогите разобрать checkout, какие файлы он цепляет и куда обращается? Нужно переделать отправку данных на сторонний сервис?
    1. В checkout загрузка товара идет "название" и "количество"
    а мне нужно, "Артикул" и "количество"?
    2. В профиле есть данные клиента, как их значения присвоить в форму заказа?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    кто б знал
     
  3. DjSan

    DjSan Новичок

    С нами с:
    24 мар 2016
    Сообщения:
    25
    Симпатии:
    0
    form-checkout.php
    Код (PHP):
    1. <?php
    2. /**
    3.  * Checkout Form
    4.  *
    5.  * This template can be overridden by copying it to yourtheme/woocommerce/checkout/form-checkout.php.
    6.  *
    7.  * HOWEVER, on occasion WooCommerce will need to update template files and you (the theme developer).
    8.  * will need to copy the new files to your theme to maintain compatibility. We try to do this.
    9.  * as little as possible, but it does happen. When this occurs the version of the template file will.
    10.  * be bumped and the readme will list any important changes.
    11.  *
    12.  * @see         http://docs.woothemes.com/document/template-structure/
    13.  * @author         WooThemes
    14.  * @package     WooCommerce/Templates
    15.  * @version     2.3.0
    16.  */
    17.  
    18. if ( ! defined( 'ABSPATH' ) ) {
    19.     exit;
    20. }
    21.  
    22. wc_print_notices();
    23.  
    24. do_action( 'woocommerce_before_checkout_form', $checkout );
    25.  
    26. // If checkout registration is disabled and not logged in, the user cannot checkout
    27. if ( ! $checkout->enable_signup && ! $checkout->enable_guest_checkout && ! is_user_logged_in() ) {
    28.     echo apply_filters( 'woocommerce_checkout_must_be_logged_in_message', __( 'You must be logged in to checkout.', 'woocommerce' ) );
    29.     return;
    30. }
    31.  
    32. ?>
    33.  
    34. <form name="checkout" method="post" class="checkout woocommerce-checkout" action="<?php echo esc_url( wc_get_checkout_url() ); ?>" enctype="multipart/form-data">
    35.  
    36.     <?php if ( sizeof( $checkout->checkout_fields ) > 0 ) : ?>
    37.  
    38.         <?php do_action( 'woocommerce_checkout_before_customer_details' ); ?>
    39.  
    40.         <div class="col2-set" id="customer_details">
    41.             <div class="col-1">
    42.                 <?php do_action( 'woocommerce_checkout_billing' ); ?>
    43.             </div>
    44.  
    45.             <div class="col-2">
    46.                 <?php do_action( 'woocommerce_checkout_shipping' ); ?>
    47.             </div>
    48.         </div>
    49.  
    50.         <?php do_action( 'woocommerce_checkout_after_customer_details' ); ?>
    51.  
    52.     <?php endif; ?>
    53.  
    54.     <h3 id="order_review_heading"><?php _e( 'Your order', 'woocommerce' ); ?></h3>
    55.  
    56.     <?php do_action( 'woocommerce_checkout_before_order_review' ); ?>
    57.  
    58.     <div id="order_review" class="woocommerce-checkout-review-order">
    59.         <?php do_action( 'woocommerce_checkout_order_review' ); ?>
    60.     </div>
    61.  
    62.     <?php do_action( 'woocommerce_checkout_after_order_review' ); ?>
    63.  
    64. </form>
    65.  
    66. <?php do_action( 'woocommerce_after_checkout_form', $checkout ); ?>

    class-wc-checkout.php
    Код (PHP):
    1. <?php
    2.  
    3. if ( ! defined( 'ABSPATH' ) ) {
    4.     exit; // Exit if accessed directly
    5. }
    6.  
    7. /**
    8.  * Checkout
    9.  *
    10.  * The WooCommerce checkout class handles the checkout process, collecting user data and processing the payment.
    11.  *
    12.  * @class         WC_Checkout
    13.  * @version        2.1.0
    14.  * @package        WooCommerce/Classes
    15.  * @category        Class
    16.  * @author         WooThemes
    17.  */
    18. class WC_Checkout {
    19.  
    20.     /** @var array Array of posted form data. */
    21.     public $posted;
    22.  
    23.     /** @var array Array of fields to display on the checkout. */
    24.     public $checkout_fields;
    25.  
    26.     /** @var bool Whether or not the user must create an account to checkout. */
    27.     public $must_create_account;
    28.  
    29.     /** @var bool Whether or not signups are allowed. */
    30.     public $enable_signup;
    31.  
    32.     /** @var object The shipping method being used. */
    33.     private $shipping_method;
    34.  
    35.     /** @var WC_Payment_Gateway|string The payment gateway being used. */
    36.     private $payment_method;
    37.  
    38.     /** @var int ID of customer. */
    39.     private $customer_id;
    40.  
    41.     /** @var array Where shipping_methods are stored. */
    42.     public $shipping_methods;
    43.  
    44.     /**
    45.      * @var WC_Checkout The single instance of the class
    46.      * @since 2.1
    47.      */
    48.     protected static $_instance = null;
    49.  
    50.     /** @var Bool */
    51.     public $enable_guest_checkout;
    52.  
    53.     /**
    54.      * Main WC_Checkout Instance.
    55.      *
    56.      * Ensures only one instance of WC_Checkout is loaded or can be loaded.
    57.      *
    58.      * @since 2.1
    59.      * @static
    60.      * @return WC_Checkout Main instance
    61.      */
    62.     public static function instance() {
    63.         if ( is_null( self::$_instance ) )
    64.             self::$_instance = new self();
    65.         return self::$_instance;
    66.     }
    67.  
    68.     /**
    69.      * Cloning is forbidden.
    70.      *
    71.      * @since 2.1
    72.      */
    73.     public function __clone() {
    74.         _doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'woocommerce' ), '2.1' );
    75.     }
    76.  
    77.     /**
    78.      * Unserializing instances of this class is forbidden.
    79.      *
    80.      * @since 2.1
    81.      */
    82.     public function __wakeup() {
    83.         _doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'woocommerce' ), '2.1' );
    84.     }
    85.  
    86.     /**
    87.      * Constructor for the checkout class. Hooks in methods and defines checkout fields.
    88.      *
    89.      * @access public
    90.      */
    91.     public function __construct () {
    92.         add_action( 'woocommerce_checkout_billing', array( $this,'checkout_form_billing' ) );
    93.         add_action( 'woocommerce_checkout_shipping', array( $this,'checkout_form_shipping' ) );
    94.  
    95.         $this->enable_signup         = get_option( 'woocommerce_enable_signup_and_login_from_checkout' ) == 'yes' ? true : false;
    96.         $this->enable_guest_checkout = get_option( 'woocommerce_enable_guest_checkout' ) == 'yes' ? true : false;
    97.         $this->must_create_account   = $this->enable_guest_checkout || is_user_logged_in() ? false : true;
    98.  
    99.         // Define all Checkout fields
    100.         $this->checkout_fields['billing']     = WC()->countries->get_address_fields( $this->get_value( 'billing_country' ), 'billing_' );
    101.         $this->checkout_fields['shipping']     = WC()->countries->get_address_fields( $this->get_value( 'shipping_country' ), 'shipping_' );
    102.  
    103.         if ( get_option( 'woocommerce_registration_generate_username' ) == 'no' ) {
    104.             $this->checkout_fields['account']['account_username'] = array(
    105.                 'type'             => 'text',
    106.                 'label'         => __( 'Account username', 'woocommerce' ),
    107.                 'required'      => true,
    108.                 'placeholder'     => _x( 'Username', 'placeholder', 'woocommerce' )
    109.             );
    110.         }
    111.  
    112.         if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) {
    113.             $this->checkout_fields['account']['account_password'] = array(
    114.                 'type'                 => 'password',
    115.                 'label'             => __( 'Account password', 'woocommerce' ),
    116.                 'required'          => true,
    117.                 'placeholder'         => _x( 'Password', 'placeholder', 'woocommerce' )
    118.             );
    119.         }
    120.  
    121.         $this->checkout_fields['order']    = array(
    122.             'order_comments' => array(
    123.                 'type' => 'textarea',
    124.                 'class' => array('notes'),
    125.                 'label' => __( 'Order Notes', 'woocommerce' ),
    126.                 'placeholder' => _x('Notes about your order, e.g. special notes for delivery.', 'placeholder', 'woocommerce')
    127.             )
    128.         );
    129.  
    130.         $this->checkout_fields = apply_filters( 'woocommerce_checkout_fields', $this->checkout_fields );
    131.  
    132.         do_action( 'woocommerce_checkout_init', $this );
    133.     }
    134.  
    135.     /**
    136.      * Checkout process.
    137.      */
    138.     public function check_cart_items() {
    139.         // When we process the checkout, lets ensure cart items are rechecked to prevent checkout
    140.         do_action('woocommerce_check_cart_items');
    141.     }
    142.  
    143.     /**
    144.      * Output the billing information form.
    145.      */
    146.     public function checkout_form_billing() {
    147.         wc_get_template( 'checkout/form-billing.php', array( 'checkout' => $this ) );
    148.     }
    149.  
    150.     /**
    151.      * Output the shipping information form.
    152.      */
    153.     public function checkout_form_shipping() {
    154.         wc_get_template( 'checkout/form-shipping.php', array( 'checkout' => $this ) );
    155.     }
    156.  
    157.     /**
    158.      * Create an order. Error codes:
    159.      *         520 - Cannot insert order into the database.
    160.      *         521 - Cannot get order after creation.
    161.      *         522 - Cannot update order.
    162.      *         525 - Cannot create line item.
    163.      *         526 - Cannot create fee item.
    164.      *         527 - Cannot create shipping item.
    165.      *         528 - Cannot create tax item.
    166.      *         529 - Cannot create coupon item.
    167.      * @access public
    168.      * @throws Exception
    169.      * @return int|WP_ERROR
    170.      */
    171.     public function create_order() {
    172.         global $wpdb;
    173.  
    174.         // Give plugins the opportunity to create an order themselves
    175.         if ( $order_id = apply_filters( 'woocommerce_create_order', null, $this ) ) {
    176.             return $order_id;
    177.         }
    178.  
    179.         try {
    180.             // Start transaction if available
    181.             wc_transaction_query( 'start' );
    182.  
    183.             $order_data = array(
    184.                 'status'        => apply_filters( 'woocommerce_default_order_status', 'pending' ),
    185.                 'customer_id'   => $this->customer_id,
    186.                 'customer_note' => isset( $this->posted['order_comments'] ) ? $this->posted['order_comments'] : '',
    187.                 'created_via'   => 'checkout'
    188.             );
    189.  
    190.             // Insert or update the post data
    191.             $order_id = absint( WC()->session->order_awaiting_payment );
    192.  
    193.             // Resume the unpaid order if its pending
    194.             if ( $order_id > 0 && ( $order = wc_get_order( $order_id ) ) && $order->has_status( array( 'pending', 'failed' ) ) ) {
    195.  
    196.                 $order_data['order_id'] = $order_id;
    197.                 $order                  = wc_update_order( $order_data );
    198.  
    199.                 if ( is_wp_error( $order ) ) {
    200.                     throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce' ), 522 ) );
    201.                 } else {
    202.                     $order->remove_order_items();
    203.                     do_action( 'woocommerce_resume_order', $order_id );
    204.                 }
    205.  
    206.             } else {
    207.  
    208.                 $order = wc_create_order( $order_data );
    209.  
    210.                 if ( is_wp_error( $order ) ) {
    211.                     throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce' ), 520 ) );
    212.                 } elseif ( false === $order ) {
    213.                     throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce' ), 521 ) );
    214.                 } else {
    215.                     $order_id = $order->id;
    216.                     do_action( 'woocommerce_new_order', $order_id );
    217.                 }
    218.             }
    219.  
    220.             // Store the line items to the new/resumed order
    221.             foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
    222.                 $item_id = $order->add_product(
    223.                     $values['data'],
    224.                     $values['quantity'],
    225.                     array(
    226.                         'variation' => $values['variation'],
    227.                         'totals'    => array(
    228.                             'subtotal'     => $values['line_subtotal'],
    229.                             'subtotal_tax' => $values['line_subtotal_tax'],
    230.                             'total'        => $values['line_total'],
    231.                             'tax'          => $values['line_tax'],
    232.                             'tax_data'     => $values['line_tax_data'] // Since 2.2
    233.                         )
    234.                     )
    235.                 );
    236.  
    237.                 if ( ! $item_id ) {
    238.                     throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce' ), 525 ) );
    239.                 }
    240.  
    241.                 // Allow plugins to add order item meta
    242.                 do_action( 'woocommerce_add_order_item_meta', $item_id, $values, $cart_item_key );
    243.             }
    244.  
    245.             // Store fees
    246.             foreach ( WC()->cart->get_fees() as $fee_key => $fee ) {
    247.                 $item_id = $order->add_fee( $fee );
    248.  
    249.                 if ( ! $item_id ) {
    250.                     throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce' ), 526 ) );
    251.                 }
    252.  
    253.                 // Allow plugins to add order item meta to fees
    254.                 do_action( 'woocommerce_add_order_fee_meta', $order_id, $item_id, $fee, $fee_key );
    255.             }
    256.  
    257.             // Store shipping for all packages
    258.             foreach ( WC()->shipping->get_packages() as $package_key => $package ) {
    259.                 if ( isset( $package['rates'][ $this->shipping_methods[ $package_key ] ] ) ) {
    260.                     $item_id = $order->add_shipping( $package['rates'][ $this->shipping_methods[ $package_key ] ] );
    261.  
    262.                     if ( ! $item_id ) {
    263.                         throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce' ), 527 ) );
    264.                     }
    265.  
    266.                     // Allows plugins to add order item meta to shipping
    267.                     do_action( 'woocommerce_add_shipping_order_item', $order_id, $item_id, $package_key );
    268.                 }
    269.             }
    270.  
    271.             // Store tax rows
    272.             foreach ( array_keys( WC()->cart->taxes + WC()->cart->shipping_taxes ) as $tax_rate_id ) {
    273.                 if ( $tax_rate_id && ! $order->add_tax( $tax_rate_id, WC()->cart->get_tax_amount( $tax_rate_id ), WC()->cart->get_shipping_tax_amount( $tax_rate_id ) ) && apply_filters( 'woocommerce_cart_remove_taxes_zero_rate_id', 'zero-rated' ) !== $tax_rate_id ) {
    274.                     throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce' ), 528 ) );
    275.                 }
    276.             }
    277.  
    278.             // Store coupons
    279.             foreach ( WC()->cart->get_coupons() as $code => $coupon ) {
    280.                 if ( ! $order->add_coupon( $code, WC()->cart->get_coupon_discount_amount( $code ), WC()->cart->get_coupon_discount_tax_amount( $code ) ) ) {
    281.                     throw new Exception( sprintf( __( 'Error %d: Unable to create order. Please try again.', 'woocommerce' ), 529 ) );
    282.                 }
    283.             }
    284.  
    285.             // Billing address
    286.             $billing_address = array();
    287.             if ( $this->checkout_fields['billing'] ) {
    288.                 foreach ( array_keys( $this->checkout_fields['billing'] ) as $field ) {
    289.                     $field_name = str_replace( 'billing_', '', $field );
    290.                     $billing_address[ $field_name ] = $this->get_posted_address_data( $field_name );
    291.                 }
    292.             }
    293.  
    294.             // Shipping address.
    295.             $shipping_address = array();
    296.             if ( $this->checkout_fields['shipping'] ) {
    297.                 foreach ( array_keys( $this->checkout_fields['shipping'] ) as $field ) {
    298.                     $field_name = str_replace( 'shipping_', '', $field );
    299.                     $shipping_address[ $field_name ] = $this->get_posted_address_data( $field_name, 'shipping' );
    300.                 }
    301.             }
    302.  
    303.             $order->set_address( $billing_address, 'billing' );
    304.             $order->set_address( $shipping_address, 'shipping' );
    305.             $order->set_payment_method( $this->payment_method );
    306.             $order->set_total( WC()->cart->shipping_total, 'shipping' );
    307.             $order->set_total( WC()->cart->get_cart_discount_total(), 'cart_discount' );
    308.             $order->set_total( WC()->cart->get_cart_discount_tax_total(), 'cart_discount_tax' );
    309.             $order->set_total( WC()->cart->tax_total, 'tax' );
    310.             $order->set_total( WC()->cart->shipping_tax_total, 'shipping_tax' );
    311.             $order->set_total( WC()->cart->total );
    312.  
    313.             // Update user meta
    314.             if ( $this->customer_id ) {
    315.                 if ( apply_filters( 'woocommerce_checkout_update_customer_data', true, $this ) ) {
    316.                     foreach ( $billing_address as $key => $value ) {
    317.                         update_user_meta( $this->customer_id, 'billing_' . $key, $value );
    318.                     }
    319.                     if ( WC()->cart->needs_shipping() ) {
    320.                         foreach ( $shipping_address as $key => $value ) {
    321.                             update_user_meta( $this->customer_id, 'shipping_' . $key, $value );
    322.                         }
    323.                     }
    324.                 }
    325.                 do_action( 'woocommerce_checkout_update_user_meta', $this->customer_id, $this->posted );
    326.             }
    327.  
    328.             // Let plugins add meta
    329.             do_action( 'woocommerce_checkout_update_order_meta', $order_id, $this->posted );
    330.  
    331.             // If we got here, the order was created without problems!
    332.             wc_transaction_query( 'commit' );
    333.  
    334.         } catch ( Exception $e ) {
    335.             // There was an error adding order data!
    336.             wc_transaction_query( 'rollback' );
    337.             return new WP_Error( 'checkout-error', $e->getMessage() );
    338.         }
    339.  
    340.         return $order_id;
    341.     }
    342.  
    343.     /**
    344.      * Process the checkout after the confirm order button is pressed.
    345.      */
    346.     public function process_checkout() {
    347.         try {
    348.             if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'woocommerce-process_checkout' ) ) {
    349.                 WC()->session->set( 'refresh_totals', true );
    350.                 throw new Exception( __( 'We were unable to process your order, please try again.', 'woocommerce' ) );
    351.             }
    352.  
    353.             if ( ! defined( 'WOOCOMMERCE_CHECKOUT' ) ) {
    354.                 define( 'WOOCOMMERCE_CHECKOUT', true );
    355.             }
    356.  
    357.             // Prevent timeout
    358.             @set_time_limit(0);
    359.  
    360.             do_action( 'woocommerce_before_checkout_process' );
    361.  
    362.             if ( WC()->cart->is_empty() ) {
    363.                 throw new Exception( sprintf( __( 'Sorry, your session has expired. [url="%s"]Return to homepage[/url]', 'woocommerce' ), home_url() ) );
    364.             }
    365.  
    366.             do_action( 'woocommerce_checkout_process' );
    367.  
    368.             // Checkout fields (not defined in checkout_fields)
    369.             $this->posted['terms']                     = isset( $_POST['terms'] ) ? 1 : 0;
    370.             $this->posted['createaccount']             = isset( $_POST['createaccount'] ) && ! empty( $_POST['createaccount'] ) ? 1 : 0;
    371.             $this->posted['payment_method']            = isset( $_POST['payment_method'] ) ? stripslashes( $_POST['payment_method'] ) : '';
    372.             $this->posted['shipping_method']           = isset( $_POST['shipping_method'] ) ? $_POST['shipping_method'] : '';
    373.             $this->posted['ship_to_different_address'] = isset( $_POST['ship_to_different_address'] ) ? true : false;
    374.  
    375.             if ( isset( $_POST['shiptobilling'] ) ) {
    376.                 _deprecated_argument( 'WC_Checkout::process_checkout()', '2.1', 'The "shiptobilling" field is deprecated. The template files are out of date' );
    377.  
    378.                 $this->posted['ship_to_different_address'] = $_POST['shiptobilling'] ? false : true;
    379.             }
    380.  
    381.             // Ship to billing only option
    382.             if ( wc_ship_to_billing_address_only() ) {
    383.                 $this->posted['ship_to_different_address']  = false;
    384.             }
    385.  
    386.             // Update customer shipping and payment method to posted method
    387.             $chosen_shipping_methods = WC()->session->get( 'chosen_shipping_methods' );
    388.  
    389.             if ( isset( $this->posted['shipping_method'] ) && is_array( $this->posted['shipping_method'] ) ) {
    390.                 foreach ( $this->posted['shipping_method'] as $i => $value ) {
    391.                     $chosen_shipping_methods[ $i ] = wc_clean( $value );
    392.                 }
    393.             }
    394.  
    395.             WC()->session->set( 'chosen_shipping_methods', $chosen_shipping_methods );
    396.             WC()->session->set( 'chosen_payment_method', $this->posted['payment_method'] );
    397.  
    398.             // Note if we skip shipping
    399.             $skipped_shipping = false;
    400.  
    401.             // Get posted checkout_fields and do validation
    402.             foreach ( $this->checkout_fields as $fieldset_key => $fieldset ) {
    403.  
    404.                 // Skip shipping if not needed
    405.                 if ( $fieldset_key == 'shipping' && ( $this->posted['ship_to_different_address'] == false || ! WC()->cart->needs_shipping_address() ) ) {
    406.                     $skipped_shipping = true;
    407.                     continue;
    408.                 }
    409.  
    410.                 // Skip account if not needed
    411.                 if ( $fieldset_key == 'account' && ( is_user_logged_in() || ( $this->must_create_account == false && empty( $this->posted['createaccount'] ) ) ) ) {
    412.                     continue;
    413.                 }
    414.  
    415.                 foreach ( $fieldset as $key => $field ) {
    416.  
    417.                     if ( ! isset( $field['type'] ) ) {
    418.                         $field['type'] = 'text';
    419.                     }
    420.  
    421.                     // Get Value
    422.                     switch ( $field['type'] ) {
    423.                         case "checkbox" :
    424.                             $this->posted[ $key ] = isset( $_POST[ $key ] ) ? 1 : 0;
    425.                         break;
    426.                         case "multiselect" :
    427.                             $this->posted[ $key ] = isset( $_POST[ $key ] ) ? implode( ', ', array_map( 'wc_clean', $_POST[ $key ] ) ) : '';
    428.                         break;
    429.                         case "textarea" :
    430.                             $this->posted[ $key ] = isset( $_POST[ $key ] ) ? wp_strip_all_tags( wp_check_invalid_utf8( stripslashes( $_POST[ $key ] ) ) ) : '';
    431.                         break;
    432.                         default :
    433.                             $this->posted[ $key ] = isset( $_POST[ $key ] ) ? ( is_array( $_POST[ $key ] ) ? array_map( 'wc_clean', $_POST[ $key ] ) : wc_clean( $_POST[ $key ] ) ) : '';
    434.                         break;
    435.                     }
    436.  
    437.                     // Hooks to allow modification of value
    438.                     $this->posted[ $key ] = apply_filters( 'woocommerce_process_checkout_' . sanitize_title( $field['type'] ) . '_field', $this->posted[ $key ] );
    439.                     $this->posted[ $key ] = apply_filters( 'woocommerce_process_checkout_field_' . $key, $this->posted[ $key ] );
    440.  
    441.                     // Validation: Required fields
    442.                     if ( isset( $field['required'] ) && $field['required'] && empty( $this->posted[ $key ] ) ) {
    443.                         wc_add_notice( '<strong>' . $field['label'] . '</strong> ' . __( 'is a required field.', 'woocommerce' ), 'error' );
    444.                     }
    445.  
    446.                     if ( ! empty( $this->posted[ $key ] ) ) {
    447.  
    448.                         // Validation rules
    449.                         if ( ! empty( $field['validate'] ) && is_array( $field['validate'] ) ) {
    450.                             foreach ( $field['validate'] as $rule ) {
    451.                                 switch ( $rule ) {
    452.                                     case 'postcode' :
    453.                                         $this->posted[ $key ] = strtoupper( str_replace( ' ', '', $this->posted[ $key ] ) );
    454.  
    455.                                         if ( ! WC_Validation::is_postcode( $this->posted[ $key ], $_POST[ $fieldset_key . '_country' ] ) ) :
    456.                                             wc_add_notice( __( 'Please enter a valid postcode/ZIP.', 'woocommerce' ), 'error' );
    457.                                         else :
    458.                                             $this->posted[ $key ] = wc_format_postcode( $this->posted[ $key ], $_POST[ $fieldset_key . '_country' ] );
    459.                                         endif;
    460.                                     break;
    461.                                     case 'phone' :
    462.                                         $this->posted[ $key ] = wc_format_phone_number( $this->posted[ $key ] );
    463.  
    464.                                         if ( ! WC_Validation::is_phone( $this->posted[ $key ] ) )
    465.                                             wc_add_notice( '<strong>' . $field['label'] . '</strong> ' . __( 'is not a valid phone number.', 'woocommerce' ), 'error' );
    466.                                     break;
    467.                                     case 'email' :
    468.                                         $this->posted[ $key ] = strtolower( $this->posted[ $key ] );
    469.  
    470.                                         if ( ! is_email( $this->posted[ $key ] ) )
    471.                                             wc_add_notice( '<strong>' . $field['label'] . '</strong> ' . __( 'is not a valid email address.', 'woocommerce' ), 'error' );
    472.                                     break;
    473.                                     case 'state' :
    474.                                         // Get valid states
    475.                                         $valid_states = WC()->countries->get_states( isset( $_POST[ $fieldset_key . '_country' ] ) ? $_POST[ $fieldset_key . '_country' ] : ( 'billing' === $fieldset_key ? WC()->customer->get_country() : WC()->customer->get_shipping_country() ) );
    476.  
    477.                                         if ( ! empty( $valid_states ) && is_array( $valid_states ) ) {
    478.                                             $valid_state_values = array_flip( array_map( 'strtolower', $valid_states ) );
    479.  
    480.                                             // Convert value to key if set
    481.                                             if ( isset( $valid_state_values[ strtolower( $this->posted[ $key ] ) ] ) ) {
    482.                                                  $this->posted[ $key ] = $valid_state_values[ strtolower( $this->posted[ $key ] ) ];
    483.                                             }
    484.                                         }
    485.  
    486.                                         // Only validate if the country has specific state options
    487.                                         if ( ! empty( $valid_states ) && is_array( $valid_states ) && sizeof( $valid_states ) > 0 ) {
    488.                                             if ( ! in_array( $this->posted[ $key ], array_keys( $valid_states ) ) ) {
    489.                                                 wc_add_notice( '<strong>' . $field['label'] . '</strong> ' . __( 'is not valid. Please enter one of the following:', 'woocommerce' ) . ' ' . implode( ', ', $valid_states ), 'error' );
    490.                                             }
    491.                                         }
    492.                                     break;
    493.                                 }
    494.                             }
    495.                         }
    496.                     }
    497.                 }
    498.             }
    499.  
    500.             // Update customer location to posted location so we can correctly check available shipping methods
    501.             if ( isset( $this->posted['billing_country'] ) ) {
    502.                 WC()->customer->set_country( $this->posted['billing_country'] );
    503.             }
    504.             if ( isset( $this->posted['billing_state'] ) ) {
    505.                 WC()->customer->set_state( $this->posted['billing_state'] );
    506.             }
    507.             if ( isset( $this->posted['billing_postcode'] ) ) {
    508.                 WC()->customer->set_postcode( $this->posted['billing_postcode'] );
    509.             }
    510.  
    511.             // Shipping Information
    512.             if ( ! $skipped_shipping ) {
    513.  
    514.                 // Update customer location to posted location so we can correctly check available shipping methods
    515.                 if ( isset( $this->posted['shipping_country'] ) ) {
    516.                     WC()->customer->set_shipping_country( $this->posted['shipping_country'] );
    517.                 }
    518.                 if ( isset( $this->posted['shipping_state'] ) ) {
    519.                     WC()->customer->set_shipping_state( $this->posted['shipping_state'] );
    520.                 }
    521.                 if ( isset( $this->posted['shipping_postcode'] ) ) {
    522.                     WC()->customer->set_shipping_postcode( $this->posted['shipping_postcode'] );
    523.                 }
    524.  
    525.             } else {
    526.  
    527.                 // Update customer location to posted location so we can correctly check available shipping methods
    528.                 if ( isset( $this->posted['billing_country'] ) ) {
    529.                     WC()->customer->set_shipping_country( $this->posted['billing_country'] );
    530.                 }
    531.                 if ( isset( $this->posted['billing_state'] ) ) {
    532.                     WC()->customer->set_shipping_state( $this->posted['billing_state'] );
    533.                 }
    534.                 if ( isset( $this->posted['billing_postcode'] ) ) {
    535.                     WC()->customer->set_shipping_postcode( $this->posted['billing_postcode'] );
    536.                 }
    537.  
    538.             }
    539.  
    540.             // Update cart totals now we have customer address
    541.             WC()->cart->calculate_totals();
    542.  
    543.             // Terms
    544.             if ( ! isset( $_POST['woocommerce_checkout_update_totals'] ) && empty( $this->posted['terms'] ) && wc_get_page_id( 'terms' ) > 0 && apply_filters( 'woocommerce_checkout_show_terms', true ) ) {
    545.                 wc_add_notice( __( 'You must accept our Terms & Conditions.', 'woocommerce' ), 'error' );
    546.             }
    547.  
    548.             if ( WC()->cart->needs_shipping() ) {
    549.  
    550.                 if ( ! in_array( WC()->customer->get_shipping_country(), array_keys( WC()->countries->get_shipping_countries() ) ) ) {
    551.                     wc_add_notice( sprintf( __( 'Unfortunately <strong>we do not ship %s</strong>. Please enter an alternative shipping address.', 'woocommerce' ), WC()->countries->shipping_to_prefix() . ' ' . WC()->customer->get_shipping_country() ), 'error' );
    552.                 }
    553.  
    554.                 // Validate Shipping Methods
    555.                 $packages               = WC()->shipping->get_packages();
    556.                 $this->shipping_methods = WC()->session->get( 'chosen_shipping_methods' );
    557.  
    558.                 foreach ( $packages as $i => $package ) {
    559.                     if ( ! isset( $package['rates'][ $this->shipping_methods[ $i ] ] ) ) {
    560.                         wc_add_notice( __( 'Invalid shipping method.', 'woocommerce' ), 'error' );
    561.                         $this->shipping_methods[ $i ] = '';
    562.                     }
    563.                 }
    564.             }
    565.  
    566.             if ( WC()->cart->needs_payment() ) {
    567.                 // Payment Method
    568.                 $available_gateways = WC()->payment_gateways->get_available_payment_gateways();
    569.  
    570.                 if ( ! isset( $available_gateways[ $this->posted['payment_method'] ] ) ) {
    571.                     $this->payment_method = '';
    572.                     wc_add_notice( __( 'Invalid payment method.', 'woocommerce' ), 'error' );
    573.                 } else {
    574.                     $this->payment_method = $available_gateways[ $this->posted['payment_method'] ];
    575.                     $this->payment_method->validate_fields();
    576.                 }
    577.             } else {
    578.                 $available_gateways = array();
    579.             }
    580.  
    581.             // Action after validation
    582.             do_action( 'woocommerce_after_checkout_validation', $this->posted );
    583.  
    584.             if ( ! isset( $_POST['woocommerce_checkout_update_totals'] ) && wc_notice_count( 'error' ) == 0 ) {
    585.  
    586.                 // Customer accounts
    587.                 $this->customer_id = apply_filters( 'woocommerce_checkout_customer_id', get_current_user_id() );
    588.  
    589.                 if ( ! is_user_logged_in() && ( $this->must_create_account || ! empty( $this->posted['createaccount'] ) ) ) {
    590.  
    591.                     $username     = ! empty( $this->posted['account_username'] ) ? $this->posted['account_username'] : '';
    592.                     $password     = ! empty( $this->posted['account_password'] ) ? $this->posted['account_password'] : '';
    593.                     $new_customer = wc_create_new_customer( $this->posted['billing_email'], $username, $password );
    594.  
    595.                     if ( is_wp_error( $new_customer ) ) {
    596.                         throw new Exception( $new_customer->get_error_message() );
    597.                     }
    598.  
    599.                     $this->customer_id = $new_customer;
    600.  
    601.                     wc_set_customer_auth_cookie( $this->customer_id );
    602.  
    603.                     // As we are now logged in, checkout will need to refresh to show logged in data
    604.                     WC()->session->set( 'reload_checkout', true );
    605.  
    606.                     // Also, recalculate cart totals to reveal any role-based discounts that were unavailable before registering
    607.                     WC()->cart->calculate_totals();
    608.  
    609.                     // Add customer info from other billing fields
    610.                     if ( $this->posted['billing_first_name'] && apply_filters( 'woocommerce_checkout_update_customer_data', true, $this ) ) {
    611.                         $userdata = array(
    612.                             'ID'           => $this->customer_id,
    613.                             'first_name'   => $this->posted['billing_first_name'] ? $this->posted['billing_first_name'] : '',
    614.                             'last_name'    => $this->posted['billing_last_name'] ? $this->posted['billing_last_name'] : '',
    615.                             'display_name' => $this->posted['billing_first_name'] ? $this->posted['billing_first_name'] : ''
    616.                         );
    617.                         wp_update_user( apply_filters( 'woocommerce_checkout_customer_userdata', $userdata, $this ) );
    618.                     }
    619.                 }
    620.  
    621.                 // Do a final stock check at this point
    622.                 $this->check_cart_items();
    623.  
    624.                 // Abort if errors are present
    625.                 if ( wc_notice_count( 'error' ) > 0 )
    626.                     throw new Exception();
    627.  
    628.                 $order_id = $this->create_order();
    629.  
    630.                 if ( is_wp_error( $order_id ) ) {
    631.                     throw new Exception( $order_id->get_error_message() );
    632.                 }
    633.  
    634.                 do_action( 'woocommerce_checkout_order_processed', $order_id, $this->posted );
    635.  
    636.                 // Process payment
    637.                 if ( WC()->cart->needs_payment() ) {
    638.  
    639.                     // Store Order ID in session so it can be re-used after payment failure
    640.                     WC()->session->order_awaiting_payment = $order_id;
    641.  
    642.                     // Process Payment
    643.                     $result = $available_gateways[ $this->posted['payment_method'] ]->process_payment( $order_id );
    644.  
    645.                     // Redirect to success/confirmation/payment page
    646.                     if ( isset( $result['result'] ) && 'success' === $result['result'] ) {
    647.  
    648.                         $result = apply_filters( 'woocommerce_payment_successful_result', $result, $order_id );
    649.  
    650.                         if ( is_ajax() ) {
    651.                             wp_send_json( $result );
    652.                         } else {
    653.                             wp_redirect( $result['redirect'] );
    654.                             exit;
    655.                         }
    656.  
    657.                     }
    658.  
    659.                 } else {
    660.  
    661.                     if ( empty( $order ) ) {
    662.                         $order = wc_get_order( $order_id );
    663.                     }
    664.  
    665.                     // No payment was required for order
    666.                     $order->payment_complete();
    667.  
    668.                     // Empty the Cart
    669.                     WC()->cart->empty_cart();
    670.  
    671.                     // Get redirect
    672.                     $return_url = $order->get_checkout_order_received_url();
    673.  
    674.                     // Redirect to success/confirmation/payment page
    675.                     if ( is_ajax() ) {
    676.                         wp_send_json( array(
    677.                             'result'     => 'success',
    678.                             'redirect'  => apply_filters( 'woocommerce_checkout_no_payment_needed_redirect', $return_url, $order )
    679.                         ) );
    680.                     } else {
    681.                         wp_safe_redirect(
    682.                             apply_filters( 'woocommerce_checkout_no_payment_needed_redirect', $return_url, $order )
    683.                         );
    684.                         exit;
    685.                     }
    686.  
    687.                 }
    688.  
    689.             }
    690.  
    691.         } catch ( Exception $e ) {
    692.             if ( ! empty( $e ) ) {
    693.                 wc_add_notice( $e->getMessage(), 'error' );
    694.             }
    695.         }
    696.  
    697.         // If we reached this point then there were errors
    698.         if ( is_ajax() ) {
    699.  
    700.             // only print notices if not reloading the checkout, otherwise they're lost in the page reload
    701.             if ( ! isset( WC()->session->reload_checkout ) ) {
    702.                 ob_start();
    703.                 wc_print_notices();
    704.                 $messages = ob_get_clean();
    705.             }
    706.  
    707.             $response = array(
    708.                 'result'    => 'failure',
    709.                 'messages'     => isset( $messages ) ? $messages : '',
    710.                 'refresh'     => isset( WC()->session->refresh_totals ) ? 'true' : 'false',
    711.                 'reload'    => isset( WC()->session->reload_checkout ) ? 'true' : 'false'
    712.             );
    713.  
    714.             unset( WC()->session->refresh_totals, WC()->session->reload_checkout );
    715.  
    716.             wp_send_json( $response );
    717.         }
    718.     }
    719.  
    720.     /**
    721.      * Get a posted address field after sanitization and validation.
    722.      * @param string $key
    723.      * @param string $type billing for shipping
    724.      * @return string
    725.      */
    726.     public function get_posted_address_data( $key, $type = 'billing' ) {
    727.         if ( 'billing' === $type || false === $this->posted['ship_to_different_address'] ) {
    728.             $return = isset( $this->posted[ 'billing_' . $key ] ) ? $this->posted[ 'billing_' . $key ] : '';
    729.         } else {
    730.             $return = isset( $this->posted[ 'shipping_' . $key ] ) ? $this->posted[ 'shipping_' . $key ] : '';
    731.         }
    732.  
    733.         // Use logged in user's billing email if neccessary
    734.         if ( 'email' === $key && empty( $return ) && is_user_logged_in() ) {
    735.             $current_user = wp_get_current_user();
    736.             $return       = $current_user->user_email;
    737.         }
    738.         return $return;
    739.     }
    740.  
    741.     /**
    742.      * Gets the value either from the posted data, or from the users meta data.
    743.      *
    744.      * @access public
    745.      * @param string $input
    746.      * @return string|null
    747.      */
    748.     public function get_value( $input ) {
    749.         if ( ! empty( $_POST[ $input ] ) ) {
    750.  
    751.             return wc_clean( $_POST[ $input ] );
    752.  
    753.         } else {
    754.  
    755.             $value = apply_filters( 'woocommerce_checkout_get_value', null, $input );
    756.  
    757.             if ( $value !== null ) {
    758.                 return $value;
    759.             }
    760.  
    761.             // Get the billing_ and shipping_ address fields
    762.             $address_fields = array_merge( WC()->countries->get_address_fields(), WC()->countries->get_address_fields( '', 'shipping_' ) );
    763.  
    764.             if ( is_user_logged_in() && array_key_exists( $input, $address_fields ) ) {
    765.                 $current_user = wp_get_current_user();
    766.  
    767.                 if ( $meta = get_user_meta( $current_user->ID, $input, true ) ) {
    768.                     return $meta;
    769.                 }
    770.  
    771.                 if ( $input == 'billing_email' ) {
    772.                     return $current_user->user_email;
    773.                 }
    774.             }
    775.  
    776.             switch ( $input ) {
    777.                 case 'billing_country' :
    778.                     return apply_filters( 'default_checkout_country', WC()->customer->get_country() ? WC()->customer->get_country() : WC()->countries->get_base_country(), 'billing' );
    779.                 case 'billing_state' :
    780.                     return apply_filters( 'default_checkout_state', WC()->customer->has_calculated_shipping() ? WC()->customer->get_state() : '', 'billing' );
    781.                 case 'billing_postcode' :
    782.                     return apply_filters( 'default_checkout_postcode', WC()->customer->get_postcode() ? WC()->customer->get_postcode() : '', 'billing' );
    783.                 case 'shipping_country' :
    784.                     return apply_filters( 'default_checkout_country', WC()->customer->get_shipping_country() ? WC()->customer->get_shipping_country() : WC()->countries->get_base_country(), 'shipping' );
    785.                 case 'shipping_state' :
    786.                     return apply_filters( 'default_checkout_state', WC()->customer->has_calculated_shipping() ? WC()->customer->get_shipping_state() : '', 'shipping' );
    787.                 case 'shipping_postcode' :
    788.                     return apply_filters( 'default_checkout_postcode', WC()->customer->get_shipping_postcode() ? WC()->customer->get_shipping_postcode() : '', 'shipping' );
    789.                 default :
    790.                     return apply_filters( 'default_checkout_' . $input, null, $input );
    791.             }
    792.         }
    793.     }
    794. }

    proceed-to-checkout-button.php
    Код (PHP):
    1. <?php
    2. /**
    3.  * Proceed to checkout button
    4.  *
    5.  * Contains the markup for the proceed to checkout button on the cart.
    6.  *
    7.  * This template can be overridden by copying it to yourtheme/woocommerce/cart/proceed-to-checkout-button.php.
    8.  *
    9.  * HOWEVER, on occasion WooCommerce will need to update template files and you (the theme developer).
    10.  * will need to copy the new files to your theme to maintain compatibility. We try to do this.
    11.  * as little as possible, but it does happen. When this occurs the version of the template file will.
    12.  * be bumped and the readme will list any important changes.
    13.  *
    14.  * @see     http://docs.woothemes.com/document/template-structure/
    15.  * @author  WooThemes
    16.  * @package WooCommerce/Templates
    17.  * @version 2.4.0
    18.  */
    19.  
    20. if ( ! defined( 'ABSPATH' ) ) {
    21.     exit; // Exit if accessed directly
    22. }
    23. ?>
    24.  
    25. <a href="<?php echo esc_url( wc_get_checkout_url() ) ;?>" class="checkout-button button alt wc-forward">
    26.     <?php echo __( 'Proceed to Checkout', 'woocommerce' ); ?>
    27. </a>
    Я хочу сделать новую страницу checkout'a чтобы он брал значения с базы

    Добавлено спустя 9 минут 44 секунды:
    Нужно что бы запрос получился так http://выпилено/help/api

    Добавлено спустя 6 минут 19 секунд:
    К примеры в профиле есть номер телефона, как его можно занести в свою форму
    Код (PHP):
    1. <form name="form" method="post" action="http://выпилено/makeOrder.php">
    2.  
    3.  <input type="hidden" name="user" value="internet-zakaz">
    4.  <input type="hidden" name="password" value="123456">
    5.  <input type="hidden" name="wid" value="412">
    6.  <input type="hidden" name="line" value="412">
    7.  <input type="hidden" name="phone" value="id=billing_phone">
    8.   <input name="btnAddArticle" type="submit" value="Отправить"/>
    9.  </form>
    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а что документации нету?
     
  5. DjSan

    DjSan Новичок

    С нами с:
    24 мар 2016
    Сообщения:
    25
    Симпатии:
    0

    Код (PHP):
    1. <?php
    2.                             echo apply_filters( 'woocommerce_cart_item_remove_link', sprintf(
    3.                                 '[url="%s"]×[/url]',
    4.                                 esc_url( WC()->cart->get_remove_url( $cart_item_key ) ),
    5.                                 __( 'Remove this item', 'woocommerce' ),
    6.                                 esc_attr( $product_id ),
    7.                                 esc_attr( $_product->get_sku() )
    8.                             ), $cart_item_key );
    9.                         ?>
    Это кнопка удаление с корзины
    в нем прописан параметр который мне нужен
    Код (PHP):
    1. esc_attr( $product_id ),
    2. esc_attr( $_product->get_sku() ) 
    Помогите составить запрос

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Что-то сходу не понятно что там и как работает
     
  7. DjSan

    DjSan Новичок

    С нами с:
    24 мар 2016
    Сообщения:
    25
    Симпатии:
    0
    Я почти разобрался.
    Подскажите, у меня есть есть кнопка "Подтвердить заказ" как в нее можно запихать свой запрос?
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    что такое по твоему запрос?
     
  9. DjSan

    DjSan Новичок

    С нами с:
    24 мар 2016
    Сообщения:
    25
    Симпатии:
    0
    Код (PHP):
    1. <form name="form" method="post" action="http://online.mobidel.ru/makeOrder.php">
    2.  
    3.  <input type="hidden" name="user" value="internet">
    4.  <input type="hidden" name="password" value="123456">
    5.  <input type="hidden" name="wid" value="412">
    6.  <input type="hidden" name="line" value="412">
    7.  Телефон: +7 <input type="text" name="phone" size="10" maxlength="10" value="">
    8.   <input name="btnAddArticle" type="submit" value="Отправить"/>
    9.  </form> 
    Вот у меня есть HTML вариант, а как его можно в PHP собрать?

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.


    Добавлено спустя 58 секунд:
    Код (PHP):
    1. <div class="form-row place-order">
    2.         <noscript>
    3.             <?php _e( 'Since your browser does not support JavaScript, or it is disabled, please ensure you click the <em>Update Totals</em> button before placing your order. You may be charged more than the amount stated above if you fail to do so.', 'woocommerce' ); ?>
    4.             <br/><input type="submit" class="button alt" name="woocommerce_checkout_update_totals" value="<?php esc_attr_e( 'Update totals', 'woocommerce' ); ?>" />
    5.         </noscript>
    6.  
    7.         <?php wc_get_template( 'checkout/terms.php' ); ?>
    8.  
    9.         <?php do_action( 'woocommerce_review_order_before_submit' ); ?>
    10.  
    11.         <?php echo apply_filters( 'woocommerce_order_button_html', '<input type="submit" class="button alt" name="woocommerce_checkout_place_order" id="place_order" value="' . esc_attr( $order_button_text ) . '" data-value="' . esc_attr( $order_button_text ) . '" />' ); ?>
    12.  
    13.         <?php do_action( 'woocommerce_review_order_after_submit' ); ?>
    14.  
    15.         <?php wp_nonce_field( 'woocommerce-process_checkout' ); ?>
    16.     </div>
    Это в WooCommerce
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Надо как-то данные из базы получить, всё зависит как это реализовано, ты спрашиваешь, то на что надо время потратит чтобы разобраться, и много.
    Можем по теории что-то подсказать или что-то простое.
    Как в PHP получить данные из формы: https://php.net/manual/ru/language.variables.external.php

    Добавлено спустя 1 минуту 18 секунд:
    тут либо ждать кто в ней хорошо разбирается или за деньги в раздел free-lance
     
  11. DjSan

    DjSan Новичок

    С нами с:
    24 мар 2016
    Сообщения:
    25
    Симпатии:
    0
    Данные я нашел. Просто я не знаю как их присвоить правильно?
    Код (PHP):
    1. $myi=0;
    2. reset($myitems);
    3. while ($mym=current($myitems)) {
    4. $url.="&articles[".$myi."]=".$mym["id"]."&quantities[".$myi."]=".$mym["quantity"];
    5. $myi++;
    6. next($myitems);
    7. };
    articles = в базе $_product->get_title()
    quantities = $cart_item['quantity']

    Добавлено спустя 54 секунды:
    Пример php
    Код (PHP):
    1. $url="http://online.mobidel.ru/makeOrder.php?". 
    2.  
    3. "user=internet_user".
    4. "&password=internet_zakaz".
    5. "&wid=112".
    6. "&line=22334455".
    7.  
    8. "&family=".urlencode($myfamily).
    9. "&street=".urlencode($mystreet).
    10. "&building=".urlencode($mybuilding).
    11. "&home=".urlencode($myhome).
    12. "&room=".urlencode($myroom).
    13. "&comment=".urlencode($mycomment).
    14. "&phone=".urlencode($myphone).
    15. "&entrance=".urlencode($myentrance).
    16. "&floor=".urlencode($myfloor).
    17. "&nonCash=".urlencode($mynonCash);
    18.  
    19. $myi=0;
    20. reset($myitems);
    21. while ($mym=current($myitems)) {
    22. $url.="&articles[".$myi."]=".$mym["id"]."&quantities[".$myi."]=".$mym["quantity"];
    23. $myi++;
    24. next($myitems);
    25. };
    26.  
    27. $mych = curl_init();
    28. curl_setopt($mych, CURLOPT_URL, $url); 
    29. curl_setopt($mych, CURLOPT_RETURNTRANSFER, TRUE);
    30. curl_setopt($mych, CURLOPT_HEADER, 0);
    31. curl_exec($mych);
    32. curl_close($mych);
    33.  
    34.  
    Добавлено спустя 4 минуты 56 секунд:
    Код (PHP):
    1. <?php
    2.             do_action( 'woocommerce_review_order_before_cart_contents' );
    3.  
    4.             foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
    5.                 $_product     = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
    6.  
    7.                 if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_checkout_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
    8.                     ?>
    9.                     <tr class="<?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>">
    10.                         <td class="product-name">
    11.                             <?php echo apply_filters( 'woocommerce_cart_item_name', $_product->get_title(), $cart_item, $cart_item_key ) . ' '; ?>
    12.                             <?php echo apply_filters( 'woocommerce_checkout_cart_item_quantity', ' <strong class="product-quantity">' . sprintf( '× %s', $cart_item['quantity'] ) . '</strong>', $cart_item, $cart_item_key ); ?>
    13.                             <?php echo WC()->cart->get_item_data( $cart_item ); ?>
    14.                         </td>
    15.                         <td class="product-total">
    16.                             <?php echo apply_filters( 'woocommerce_cart_item_subtotal', WC()->cart->get_product_subtotal( $_product, $cart_item['quantity'] ), $cart_item, $cart_item_key ); ?>
    17.                         </td>
    18.                     </tr>
    19.                     <?php
    20.                 }
    21.             }
    22.  
    23.             do_action( 'woocommerce_review_order_after_cart_contents' );
    24.         ?>
    На сколько я понял это тоже самое что и
    Код (PHP):
    1. $myi=0;
    2. reset($myitems);
    3. while ($mym=current($myitems)) {
    4. $url.="&articles[".$myi."]=".$mym["id"]."&quantities[".$myi."]=".$mym["quantity"];
    5. $myi++;
    6. next($myitems);
    7. };
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    [оффтопик]
    не знаю как другим, а мне даже не хочется пытаться понять код, который автор (он автор?) не удосужился выделить отступами. если тебе по* читается ли твой код, мне тоже по*. адекватная реакция, имхо.
    [/оффтопик]
     
  13. DjSan

    DjSan Новичок

    С нами с:
    24 мар 2016
    Сообщения:
    25
    Симпатии:
    0
    помогите оформить в HTML'e
    Код (PHP):
    1. $myi=0;
    2. reset($myitems);
    3. while ($mym=current($myitems)) {
    4. $url.="&articles[".$myi."]=".$mym["id"]."&quantities[".$myi."]=".$mym["quantity"];
    5. $myi++;
    6. next($myitems);
    7. }; 
    А остальное я создал новую форму на странице, а с это не могу написать в HTML коде?

    Добавлено спустя 46 секунд:
    Данные нужно взять с корзины

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т. д.
     
  14. bikerlex

    bikerlex Активный пользователь

    С нами с:
    2 дек 2014
    Сообщения:
    344
    Симпатии:
    40