本文整理汇总了PHP中meta_is_product_attribute函数的典型用法代码示例。如果您正苦于以下问题:PHP meta_is_product_attribute函数的具体用法?PHP meta_is_product_attribute怎么用?PHP meta_is_product_attribute使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了meta_is_product_attribute函数的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: order_again
/**
* Place a previous order again.
*/
public static function order_again()
{
// Nothing to do
if (!isset($_GET['order_again']) || !is_user_logged_in() || !isset($_GET['_wpnonce']) || !wp_verify_nonce($_GET['_wpnonce'], 'woocommerce-order_again')) {
return;
}
// Clear current cart
WC()->cart->empty_cart();
// Load the previous order - Stop if the order does not exist
$order = wc_get_order(absint($_GET['order_again']));
if (!$order->get_id()) {
return;
}
if (!$order->has_status(apply_filters('woocommerce_valid_order_statuses_for_order_again', array('completed')))) {
return;
}
// Make sure the user is allowed to order again. By default it check if the
// previous order belonged to the current user.
if (!current_user_can('order_again', $order->get_id())) {
return;
}
// Copy products from the order to the cart
foreach ($order->get_items() as $item) {
// Load all product info including variation data
$product_id = (int) apply_filters('woocommerce_add_to_cart_product_id', $item->get_product_id());
$quantity = $item->get_quantity();
$variation_id = $item->get_variation_id();
$variations = array();
$cart_item_data = apply_filters('woocommerce_order_again_cart_item_data', array(), $item, $order);
foreach ($item->get_meta_data() as $meta) {
if (taxonomy_is_product_attribute($meta->meta_key)) {
$variations[$meta->meta_key] = $meta->meta_value;
} elseif (meta_is_product_attribute($meta->meta_key, $meta->meta_value, $product_id)) {
$variations[$meta->meta_key] = $meta->meta_value;
}
}
// Add to cart validation
if (!apply_filters('woocommerce_add_to_cart_validation', true, $product_id, $quantity, $variation_id, $variations, $cart_item_data)) {
continue;
}
WC()->cart->add_to_cart($product_id, $quantity, $variation_id, $variations, $cart_item_data);
}
do_action('woocommerce_ordered_again', $order->get_id());
// Redirect to cart
wc_add_notice(__('The cart has been filled with the items from your previous order.', 'woocommerce'));
wp_safe_redirect(wc_get_cart_url());
exit;
}
示例2: setup_cart
/**
* Set up cart item meta data for a to complete a subscription renewal via the cart.
*
* @since 2.0
*/
protected function setup_cart($subscription, $cart_item_data)
{
WC()->cart->empty_cart(true);
$success = true;
foreach ($subscription->get_items() as $item_id => $line_item) {
// Load all product info including variation data
$product_id = (int) apply_filters('woocommerce_add_to_cart_product_id', $line_item['product_id']);
$quantity = (int) $line_item['qty'];
$variation_id = (int) $line_item['variation_id'];
$variations = array();
foreach ($line_item['item_meta'] as $meta_name => $meta_value) {
if (taxonomy_is_product_attribute($meta_name)) {
$variations[$meta_name] = $meta_value[0];
} elseif (meta_is_product_attribute($meta_name, $meta_value[0], $product_id)) {
$variations[$meta_name] = $meta_value[0];
}
}
$product = get_product($line_item['product_id']);
// The notice displayed when a subscription product has been deleted and the custoemr attempts to manually renew or make a renewal payment for a failed recurring payment for that product/subscription
// translators: placeholder is an item name
$product_deleted_error_message = apply_filters('woocommerce_subscriptions_renew_deleted_product_error_message', __('The %s product has been deleted and can no longer be renewed. Please choose a new product or contact us for assistance.', 'woocommerce-subscriptions'));
// Display error message for deleted products
if (false === $product) {
wc_add_notice(sprintf($product_deleted_error_message, $line_item['name']), 'error');
// Make sure we don't actually need the variation ID (if the product was a variation, it will have a variation ID; however, if the product has changed from a simple subscription to a variable subscription, there will be no variation_id)
} elseif ($product->is_type(array('variable-subscription')) && !empty($line_item['variation_id'])) {
$variation = get_product($variation_id);
// Display error message for deleted product variations
if (false === $variation) {
wc_add_notice(sprintf($product_deleted_error_message, $line_item['name']), 'error');
}
}
if (wcs_is_subscription($subscription)) {
$cart_item_data['subscription_line_item_id'] = $item_id;
}
$cart_item_key = WC()->cart->add_to_cart($product_id, $quantity, $variation_id, $variations, apply_filters('woocommerce_order_again_cart_item_data', array($this->cart_item_key => $cart_item_data), $line_item, $subscription));
$success = $success && (bool) $cart_item_key;
}
// If a product linked to a subscription failed to be added to the cart prevent partially paying for the order by removing all cart items.
if (!$success && wcs_is_subscription($subscription)) {
wc_add_notice(sprintf(esc_html__('Subscription #%d has not been added to the cart.', 'woocommerce-subscriptions'), $subscription->id), 'error');
WC()->cart->empty_cart(true);
}
do_action('woocommerce_setup_cart_for_' . $this->cart_item_key, $subscription, $cart_item_data);
}