本文整理汇总了PHP中WC_Product_Variable::get_children方法的典型用法代码示例。如果您正苦于以下问题:PHP WC_Product_Variable::get_children方法的具体用法?PHP WC_Product_Variable::get_children怎么用?PHP WC_Product_Variable::get_children使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WC_Product_Variable
的用法示例。
在下文中一共展示了WC_Product_Variable::get_children方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: array
/**
* Test variable and variations.
*
* @since 2.7.0
*/
function test_variables_and_variations()
{
$product = new WC_Product_Variable();
$product->set_name('Variable Product');
$attribute = new WC_Product_Attribute();
$attribute->set_id(0);
$attribute->set_name('pa_color');
$attribute->set_options(explode(WC_DELIMITER, 'green | red'));
$attribute->set_visible(false);
$attribute->set_variation(true);
$product->set_attributes(array($attribute));
$product->save();
$this->assertEquals('Variable Product', $product->get_name());
$variation = new WC_Product_Variation();
$variation->set_name('Variation #1 of Dummy Variable CRUD Product');
$variation->set_parent_id($product->get_id());
$variation->set_regular_price(10);
$variation->set_sku('CRUD DUMMY SKU VARIABLE GREEN');
$variation->set_manage_stock('no');
$variation->set_downloadable('no');
$variation->set_virtual('no');
$variation->set_stock_status('instock');
$variation->set_attributes(array('pa_color' => 'green'));
$variation->save();
$this->assertEquals('Variation #1 of Dummy Variable CRUD Product', $variation->get_name());
$this->assertEquals('CRUD DUMMY SKU VARIABLE GREEN', $variation->get_sku());
$this->assertEquals(10, $variation->get_price());
$product = new WC_Product_Variable($product->get_id());
$children = $product->get_children();
$this->assertEquals($variation->get_id(), $children[0]);
$expected_attributes = array('pa_color' => array('green'));
$this->assertEquals($expected_attributes, $product->get_variation_attributes());
$variation_2 = new WC_Product_Variation();
$variation_2->set_name('Variation #2 of Dummy Variable CRUD Product');
$variation_2->set_parent_id($product->get_id());
$variation_2->set_regular_price(10);
$variation_2->set_sku('CRUD DUMMY SKU VARIABLE RED');
$variation_2->set_manage_stock('no');
$variation_2->set_downloadable('no');
$variation_2->set_virtual('no');
$variation_2->set_stock_status('instock');
$variation_2->set_attributes(array('pa_color' => 'red'));
$variation_2->save();
$this->assertEquals('Variation #2 of Dummy Variable CRUD Product', $variation_2->get_name());
$this->assertEquals('CRUD DUMMY SKU VARIABLE RED', $variation_2->get_sku());
$this->assertEquals(10, $variation_2->get_price());
$product = new WC_Product_Variable($product->get_id());
$children = $product->get_children();
$this->assertEquals($variation_2->get_id(), $children[1]);
$this->assertEquals(2, count($children));
$expected_attributes = array('pa_color' => array('green', 'red'));
$this->assertEquals($expected_attributes, $product->get_variation_attributes());
$variation_2->set_name('UPDATED - Variation #2 of Dummy Variable CRUD Product');
$variation_2->set_regular_price(15);
$variation_2->set_sale_price(9.99);
$variation_2->set_date_on_sale_to('32532537600');
$variation_2->save();
$product = new WC_Product_Variable($product->get_id());
$expected_prices['price'][$children[0]] = 10.0;
$expected_prices['price'][$children[1]] = 9.99;
$expected_prices['regular_price'][$children[0]] = 10.0;
$expected_prices['regular_price'][$children[1]] = 15.0;
$expected_prices['sale_price'][$children[0]] = 10.0;
$expected_prices['sale_price'][$children[1]] = 9.99;
$this->assertEquals($expected_prices, $product->get_variation_prices());
$this->assertEquals('UPDATED - Variation #2 of Dummy Variable CRUD Product', $variation_2->get_name());
$product->set_name('Renamed Variable Product');
$product->save();
$this->assertEquals('Renamed Variable Product', $product->get_name());
$product->delete();
}
示例2: variable_product_sync
/**
* Sync variable product prices with the children lowest/highest price per
* unit.
*
* Code based on WC_Product_Variable version 2.0.0
* @see WC_Product_Variable::variable_product_sync()
* @see WC_Price_Calculator_Product::variable_product_unsync()
*
* @since 3.0
* @param WC_Product_Variable $product the variable product
* @param WC_Price_Calculator_Settings $settings the calculator settings
*/
public static function variable_product_sync($product, $settings)
{
// save the original values so we can restore the product
$product->wcmpc_min_variation_price = $product->min_variation_price;
$product->wcmpc_min_variation_regular_price = $product->min_variation_regular_price;
$product->wcmpc_min_variation_sale_price = $product->min_variation_sale_price;
$product->wcmpc_max_variation_price = $product->max_variation_price;
$product->wcmpc_max_variation_regular_price = $product->max_variation_regular_price;
$product->wcmpc_max_variation_sale_price = $product->max_variation_sale_price;
$product->wcmpc_price = $product->price;
$product->min_variation_price = $product->min_variation_regular_price = $product->min_variation_sale_price = $product->max_variation_price = $product->max_variation_regular_price = $product->max_variation_sale_price = '';
foreach ($product->get_children() as $variation_product_id) {
$variation_product = apply_filters('wc_measurement_price_calculator_variable_product_sync', SV_WC_Plugin_Compatibility::wc_get_product($variation_product_id), $product);
$child_price = $variation_product->price;
$child_regular_price = $variation_product->regular_price;
$child_sale_price = $variation_product->sale_price;
// get the product measurement
$measurement = self::get_product_measurement($variation_product, $settings);
$measurement->set_unit($settings->get_pricing_unit());
if ('' === $child_price && '' === $child_regular_price || !$measurement->get_value()) {
continue;
}
// convert to price per unit
if ('' !== $child_price) {
$child_price /= $measurement->get_value();
}
// Regular prices
if ($child_regular_price !== '') {
// convert to price per unit
$child_regular_price /= $measurement->get_value();
if (!is_numeric($product->min_variation_regular_price) || $child_regular_price < $product->min_variation_regular_price) {
$product->min_variation_regular_price = $child_regular_price;
}
if (!is_numeric($product->max_variation_regular_price) || $child_regular_price > $product->max_variation_regular_price) {
$product->max_variation_regular_price = $child_regular_price;
}
}
// Sale prices
if ($child_sale_price !== '') {
// convert to price per unit
$child_sale_price /= $measurement->get_value();
if ($child_price == $child_sale_price) {
if (!is_numeric($product->min_variation_sale_price) || $child_sale_price < $product->min_variation_sale_price) {
$product->min_variation_sale_price = $child_sale_price;
}
if (!is_numeric($product->max_variation_sale_price) || $child_sale_price > $product->max_variation_sale_price) {
$product->max_variation_sale_price = $child_sale_price;
}
}
}
// Actual prices
if ($child_price !== '') {
if ($child_price > $product->max_variation_price) {
$product->max_variation_price = $child_price;
}
if ($product->min_variation_price === '' || $child_price < $product->min_variation_price) {
$product->min_variation_price = $child_price;
}
}
}
// as seen in WC_Product_Variable::get_price_html()
$product->price = $product->min_variation_price;
}
示例3: get_product_variations
public function get_product_variations($prod_id)
{
// verify we are in woocommerce product
if (function_exists('get_product')) {
$product = new WC_Product_Variable($prod_id);
// WC_Product
if (isset($product->id) && (int) $product->id > 0) {
return $product->get_children();
}
}
return array();
}
示例4: get_wc_product_variations
/**
* Get all variations of a given WC_Product_Variable.
*
* @param WC_Product_Variable $wc_variable_product
* @return array Array of WC_Product_Variation objects.
*/
public static function get_wc_product_variations(WC_Product_Variable $wc_variable_product)
{
$variations = array();
foreach ($wc_variable_product->get_children() as $child_id) {
$variation = $wc_variable_product->get_child($child_id);
if (empty($variation->variation_id)) {
continue;
}
$variations[] = $variation;
}
return $variations;
}