κΈ°λ³Έ Wordpress ν
λ§(μ: Storefront)μμ μ΄ λ¬Έμ λ₯Ό μ¬νν μ μμ΅λκΉ?
μ
WooCommerce, Polylang λ° Hyyan WooCommerce Polylang ν΅ν©μ μ μΈν λ€λ₯Έ λͺ¨λ νλ¬κ·ΈμΈμ΄ λΉνμ±νλ κ²½μ° μ΄ λ¬Έμ λ₯Ό μ¬νν μ μμ΅λκΉ?
μ
μ΄ λ¬Έμ κ° λ°μν λ μ΄λ€ μ ν λ²μ λ° μ€μ μ μ¬μ©νκ³ μμ΅λκΉ?
PHP: PHP 7.0
μλνλ μ€: 4.9.2
μ°μ»€λ¨Έμ€: 3.2.6
ν΄λ¦¬λ: 2.2.8
Hyyan WooCommerce Polylang ν΅ν©: 1.0.4
λΈλΌμ°μ : μ΅μ ν¬λ‘¬
λ²μ λ¨κ³
2κ° μ΄μμ μΈμ΄λ₯Ό μ€μ νκ³ EN = κΈ°λ³Έκ°, FRμ΄λΌκ³ κ°μ ν΄ λ³΄κ² μ΅λλ€.
μ νμ μ€μ νκ³ 2κ° μΈμ΄λ‘ λ²μνκ³ μ¬κ³ λ₯Ό 3κ°λ‘ μ€μ
FRμ μλ λμ ν΄λΉ μ ν μ€ 1κ°λ₯Ό μ₯λ°κ΅¬λμ μΆκ°ν©λλ€.
Paypal λλ Payzenκ³Ό κ°μ κ²°μ νλ«νΌμΌλ‘ κ²°μ λ₯Ό μ§νν©λλ€.
κ²°μ κ° μλ£λλ©΄ μΉμ¬μ΄νΈλ‘ 리λλ μ
λκΈ° μ μ νμ΄μ§λ₯Ό λ«μ΅λλ€.
IPNμ΄ μΉμ¬μ΄νΈλ‘ μ μ‘λμλμ§ νμΈνμμμ€.
κ·νμ μ£Όλ¬Έμ΄ μ μλμμΌλ©° μ ν μ¬κ³ λ ENμμ 1, FRμμ 3μ
λλ€!
λ΄κ° κΈ°λνλ κ²
3μ΄μκ³ 1μ ꡬμ
ν κ²μ²λΌ λͺ¨λ μΈμ΄λ‘ 2λ₯Ό μ¬κ³ λ‘ λ³΄μ ν©λλ€.
λμ μΌμ΄λ μΌ
IPNμ ν΅ν΄ νΈμΆν λ μ¬κ³ μ
λ°μ΄νΈ μ
λ°μ΄νΈλ κΈ°λ³Έ μΈμ΄λ₯Ό κ°κ° ν λ²μ΄ μλ 2λ°°λ‘ μ
λ°μ΄νΈνκ³ λ€μκ³Ό κ°μ΄ μμ ν μ μλ λ¬Έμ λ₯Ό νν€μ³€μ΅λλ€.
Stock.phpμμ μ΄ μ€μ μ κ±°νμ¬
$productID = Utilities::get_order_item_productid($item);
$productObject = wc_get_product($productID);
μ¬ννΌ IPNμ ν΅ν΄ νΈμΆλ λ get_order_item_productid ν¨μλ μ νν μ ν λμ κΈ°λ³Έ μΈμ΄ μ νμ μ ν IDλ₯Ό λ°νν©λλ€.
wc-stock-function.phpλ₯Ό νμΈνκ³ λ μ€μ λ€μκ³Ό κ°μ΄ λ³κ²½νμ΅λλ€.
$productObject = $item->get_product();
$productID = $productObject->get_id();
κ·Έλ° λ€μ μ κ±°νμ΅λλ€.
unset($translations[$orderLang]);
λ²μ 루νμμ νμ¬ μ νμ 건λλ°μμ΅λλ€.
if ($ID == $productID) continue;
IPNμ ν΅ν΄ νΈμΆλλ©΄ get_order_item_productid ν¨μλ μ νν μ ν λμ κΈ°λ³Έ μΈμ΄ μ νμ μ ν IDλ₯Ό λ°νν©λλ€.
μ, IPN URL μ체λ κΈ°λ³Έ μΈμ΄μμμ κ°μ΄ Polylangμμ μ²λ¦¬λ©λλ€.
[#218μ μΈμ΄λ³ IPNμ΄ μμ μ μλ€κ³ μ μνκ³ μ΄λ¬ν μΌμ΄ λ°μνμ§ μλλ‘ λ³κ²½μ μ μν©λλ€.]
λ³κ²½ μ¬νμ΄ IPN ν΅νμλ§ μ μ©λλλ‘ μ΄λ»κ² μ νλ©λκΉ?
λ³κ²½ μ¬νμ μ°¨μ΄μ μ λͺ
ννκ² κ²ν ν μ μλλ‘ λ³κ²½ μ¬νμ pull μμ²μΌλ‘ μ μΆν μ μμ΅λκΉ?
μμ§ν μ§λ¬Έ νλ, IPNμ μ¬μ©νμ§ μμλ λ¬Έμ κ° ν΄κ²°λμ§ μμ΅λκΉ? μ΄ κ²½μ° IPNμ μ¬μ©νλ©΄ μ΄λ€ μ΄μ μ΄ μμ΅λκΉ? (λ€λ₯Έ κ²°μ μ 곡μ 체λ IPNμ μ¬μ©νμ§ μμΌλ©° PayPalλ νμνμ§ μμΌλ―λ‘ λͺ νν νκΈ° μν΄...)
λ³κ²½ μ¬νμ λΉ IPN νΈμΆμ μν₯μ λ―ΈμΉμ§ μλ κ² κ°μ΅λλ€. νλ‘λμ
μμ λ΄ ν¨μΉλ₯Ό μ¬μ©νκ³ μμΌλ©° μ ν λ¬Έμ κ° μμ΅λλ€.
λ³κ²½ μμ²μ μ μΆνμ΅λλ€.
IPN μ¬μ©μ μ΄λ»κ² νΌν μ μλμ§ μ λ§ λͺ¨λ₯΄κ² μ΅λλ€. μ΄λ»κ² μ¬μ©νμ§ μλμ§ μ€λͺ
ν΄μ£Όμ€ μ μλμ?
IPNμ μ¬μ©νμ§ μμΌλ©΄ μΌλ°μ μΌλ‘ κ²°μ ν 리λλ μ
λλ νμ΄μ§μΈ PDTμ μ μ μΌλ‘ μμ‘΄νκ² λ©λλ€. μ°λ¦¬μ κ²½μ° κ³ κ°μ 50% μ΄μμ΄ κ²°μ ν μΉ μ¬μ΄νΈλ‘ 리λλ μ
(1μ΄λ‘ μ€μ )λ λκΉμ§ κΈ°λ€λ¦¬μ§ μμ΅λλ€. μ¦, IPNμ΄ μμΌλ©΄ μ£Όλ¬Έμ μ λ°μ΄ κ²°μ μλ£λ‘ μ νλμ§ μμ΅λλ€. IPNμ ν΅ν΄ μ£Όλ¬Έ κ²°μ κ° μ
λ°μ΄νΈλμλμ§ νμΈν μ μμΌλ©° κ·νκ° μ΄κ²μ μ¬μ©νμ§ μλ λ°©λ²μ μ΄ν΄ν μ μμ΅λλ€.
μλ₯Ό λ€μ΄ νμ€ Stripe 체ν¬μμμλ νμ΄μ§μ νμ λν μμλ μΉ΄λ νλκ° μμ΅λλ€(λλ νμ΄μ§μ Apple Pay λ²νΌ). μλ°μ€ν¬λ¦½νΈμ μμ½μ€ νΈμΆ μΈνΈλ₯Ό ν΅ν΄ λͺ¨λ κ²μ μ μ΄νλ ββκ² κ°μ΅λλ€. Paypal IPNκ³Ό λμΌν©λλ€.
WooCommerceμμ μ 곡νλ Paypal ν΅ν© λλ λ€λ₯Έ νλ¬κ·ΈμΈ μ€ νλλ₯Ό μ¬μ©νκ³ μμ΅λκΉ?
μλ° μ€ν¬λ¦½νΈλ ν΄λΌμ΄μΈνΈ μΈ‘μ΄λ―λ‘ μ λ’°ν μ μμ΅λλ€. JSκ° μ€ν¨νκ±°λ μ°¨λ¨λ μ μμΌλ©° μΌλ°μ μΌλ‘ νμ
λ μ°¨λ¨λ©λλ€. λν λ§μ κ³ κ°μ΄ Javascriptμ μλͺ»λ ꡬνμΌλ‘ μλ €μ§ Win7κ³Ό ν¨κ» IEλ₯Ό μ€νν©λλ€.
μ°λ¦¬λ Paypalμ μ¬μ©νμ§ μκ³ PayZen λ° Ingenico νλ¬κ·ΈμΈμ μ¬μ©νκ³ μμΌλ©° λ λ€ IPNκ³Ό ν¨κ» μλν©λλ€.
νλ¬κ·ΈμΈκ³Ό ν¨κ» IPNμ μ¬μ©ν νμλ μμ§λ§ Stripeμμλ νμ μ¬μ©ν μ μμ΅λλ€.
https://github.com/jatskie/stripe/blob/master/ipn.php
μ°λ¦¬λ λΉμ μκ² νμ μ μ£ΌκΈ° μν΄ κ·Έκ²μ ꡬννμ΅λλ€. λν μ°λ¦¬ μ
무μμ μ¬λλ€μ μ μ¬μ 10μ 15λΆ μ΄μ μ μ£Όλ¬Ένκ³ 12μ μ΄μ μ λ°°λ¬λκΈ° λλ¬Έμ μ§λΆμ΄ ν΅μ§λμ§ μμΌλ©΄ κ³ κ°μ μ μ¬μ λ°μ§ λͺ»ν κ²μ
λλ€. μκ°μ΄ μ€μν μ΄ λ¬Έμ μμ μ°λ¦¬λ μ°μ°μ μμ‘΄ν μ μμΌλ©° μ§λΆλ μ£Όλ¬Έμ΄ μ°λ¦¬μ κΈ°κ° λ΄μ μ²λ¦¬λ μ μλλ‘ IPNμ ꡬνν΄μΌ ν©λλ€.
μ°λ¦¬κ° μ‘κΈ μνμΌλ‘ μ§λΆνλ©΄ μλνμ§ μμ΅λλ€.
@carlituxman λκ΅°κ°κ° λ Όνν μ μλ μΆ©λΆν μΈλΆ μ¬νμ μλμ§λ§ woocommerce ajaxκ° λ€μ λ³κ²½λ¨μ λ°λΌ woocommerce 3.3.5μμ μν©μ΄ λ³κ²½λμμ κ°λ₯μ±μ΄ ν½λλ€. μ΄λ € μλ ν 리νμ€νΈ μ€ νλλ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ μλκ³ λ€λ₯Έ νλλ μμ½μ€ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ μλ λ κ°μ§ λͺ¨λλ‘ ν μ€νΈν΄μΌ ν©λλ€.
μ£μ‘ ν΄μ. ajax μμ λ¬Έμ λ 무μμ
λκΉ?
#329λΌκ³ λ§μνμλ κ² κ°μλ°μ?
#329 λ° #300 μμ μ¬νμ μ μ©νλλ° μλνμ§ μμ΅λλ€.
λμΌν #332 λ¬Έμ κ° μμ΅λλ€.
κΈμ, λΉμ μ μ΄λ€ λ²μ μ μ°μ»€λ¨Έμ€λ₯Ό μ¬μ©νκ³ μμ΅λκΉ?
μ°μ»€λ¨Έμ€ 3.3.5
μ΄ λ¬Έμ μ λν ν΄κ²°μ± μ΄ μμ΅λκΉ? μ°λ¦¬ κ°κ² μ€ νλμμ μ λ§ λμ©λλ€. μ°λ¦¬λ κ³ μ ν μ νμ΄ λ§μ΄ μμΌλ©°(μ¬κ³ κ° 1κ°λ§ μμ) ν μΈμ΄λ‘ μ£Όλ¬Έν κ²½μ° λ€λ₯Έ μΈμ΄μ μ¬κ³ λ 1λ‘ μ μ§λ©λλ€(μ£Όμ μΈμ΄μ μ¬κ³ λ -1λ‘ μ€μ λ¨). μ΄μ μ°λ¦¬λ ν μΈμ΄λ‘ λ μ¬κ³ κ° μλ μ νμ λν΄ μ΄μ€ μ£Όλ¬Έμ λͺ κ° κ°μ§κ³ μμ΅λλ€. λ€λ₯Έ μΈμ΄μμλ νμ λλλΌλ...
λ΄ Fixλ₯Ό νμΈνκ³ νλ¬κ·ΈμΈμμ Stock νμΌμ λ³κ²½ν μ μμ΅λλ€.
https://github.com/hyyan/woo-poly-integration/pull/300/files
μμ§ μΉμΈλμ§ μμμ§λ§ λ¬Έμ μμ΄ ν λ¬ λμ μ¬μ©νκ³ μμ΅λλ€.
μΈμ κ° κ·Έλ€μ΄ λ΄ pull μμ²μ μλ½νκΈ°λ₯Ό λ°λλλ€ ...
@Tii κ°μ¬ν©λλ€. μμ ν΄ λ³΄κ² μ΅λλ€. κ·Έλ€μ΄ λΉμ μ pull requestλ₯Ό μλ½νκΈ°λ₯Ό λ°λλλ€. μ½μ΄ νμΌμ μΆκ°ν΄μΌ νλ 첫 λ²μ§Έ λ²κ·Έ μμ μ΄ μλλλ€. νμ¬ νλ¬κ·ΈμΈ λ²μ μ μ λ°μ΄νΈν μ μμ΅λλ€. :(
μ΄ μμ μ¬νμ λμμ΄ λμ§ μμμ΅λλ€. μ¬κ³ λ ν΄λΉ μΈμ΄λ‘ "ꡬ맀"λ§ λ³κ²½λ©λλ€. λ³μκ° μλ μ£Όμμ μ€μ νμ΅λλ€. λꡬλ μ§ ν΄κ²°μ± μ΄ μμ΅λκΉ?
@Stibo νμ¬ νλ¬κ·ΈμΈ λ²μ μ μ
λ°μ΄νΈν μ
λ€λ₯Έ λ³κ²½ μ¬νμ΄ μλ κ²½μ° githubμμ μμ μ λΆκΈ°λ₯Ό λ§λ€κ³ λ³κ²½ μ¬νμ νμΈνκ³ pull μμ²μ μ κΈ°νμμμ€.
μ΄ μ΅μ /μμ μ μ μκ² ν¨κ³Όκ° μμμ΅λλ€. :(
μ€μ λ‘ μ 체 μ½λλ₯Ό λ€μ μμ±νμ΅λλ€.
`
보νΈλ κΈ°λ₯ λ³κ²½(WC_Order_Item_Product $item, $action = self::STOCK_REDUCE_ACTION) {
$productID = Utilities::get_order_item_productid($item);
$productObject = wc_get_product($productID);
$orderLang = pll_get_post_language($item->get_order_id());
if ($productObject && $orderLang) {
$translations = Utilities::getProductTranslationsArrayByObject($productObject);
$isManageStock = $productObject->managing_stock();
$method = ($action === self::STOCK_REDUCE_ACTION) ?
'decrease' :
'increase';
$change = ($action === self::STOCK_REDUCE_ACTION) ?
Utilities::get_order_item_quantity($item) :
Utilities::get_order_item_change($item);
$mainStock = null;
$mainStockId = null;
$products = array();
foreach ($translations as $ID) {
$product = wc_get_product($ID);
$stock = $product->get_stock_quantity();
if ($mainStock === null) {
$mainStock = $stock;
$mainStockId = $ID;
} else {
if ($method === 'decrease') {
if ($mainStock > $stock) {
$mainStock = $stock;
$mainStockId = $ID;
}
} else {
if ($mainStock < $stock) {
$mainStock = $stock;
$mainStockId = $ID;
}
}
}
}
unset($products[$mainStock]);
foreach ($translations as $ID) {
if ($ID === $mainStockId) continue;
if ($isManageStock) {
\wc_update_product_stock($ID, $change, $method);
}
$general = Settings::getOption(
'general', MetasList::getID(), array('total_sales')
);
if (in_array('total_sales', $general)) {
update_post_meta($ID, 'total_sales', get_post_meta($mainStockId, 'total_sales', true)
);
}
}
}
}
`
κ·Έλμ μ μ κ·Ό λ°©μμ λ€λ₯Έ μ£Όμκ³Ό λ€λ₯Έ μ£Όμμ νμΈνκ³ λͺ¨λ μ£Όμμ λκΈ°ννλ κ²μ΄μμ΅λλ€.
κ·Έλ€μ§ ν¨μ¨μ μ΄μ§λ μμ§λ§ IPNμ ν΅ν΄ μΈμ΄λ₯Ό μ»μ μ μμ λκΉμ§λ μ μλν©λλ€.
μλ νμΈμ ν°μ΄λ
μ€λ μ¬μ©ν΄λ³Όκ²μ :)
보νΈλ κΈ°λ₯ λ³κ²½μ λν λͺ¨λ μ½λλ₯Ό λΆμ¬λ£μ μ μμ΅λκΉ?
λλ κ°μ λ¬Έμ κ° λ°μν©λλ€ :/
μλ νμΈμ ν°μ΄λ
μ€λ μ¬μ©ν΄λ³Όκ²μ :)
λλ λ³νμ μν μμ μ νμ§ μμλ€λ κ²μ μ£Όλͺ©νλΌ
μλ νμΈμ ν°μ΄λ
μ€λ μ¬μ©ν΄λ³Όκ²μ :)λλ λ³νμ μν μμ μ νμ§ μμλ€λ κ²μ μ£Όλͺ©νλΌ
보νΈλ κΈ°λ₯ λ³κ²½μ λν λͺ¨λ μ½λλ₯Ό λΆμ¬λ£μ μ μμ΅λκΉ?
μλ νμΈμ ν°μ΄λ
μ€λ μ¬μ©ν΄λ³Όκ²μ :)λλ λ³νμ μν μμ μ νμ§ μμλ€λ κ²μ μ£Όλͺ©νλΌ
보νΈλ κΈ°λ₯ λ³κ²½μ λν λͺ¨λ μ½λλ₯Ό λΆμ¬λ£μ μ μμ΅λκΉ?
λ΄κ° μ΄ν΄νλμ§ μ λͺ¨λ₯΄κ² μ§λ§ μ 체 κΈ°λ₯μ 볡μ¬νμ΅λλ€ ...
μλ νμΈμ ν°μ΄λ
μ€λ μ¬μ©ν΄λ³Όκ²μ :)λλ λ³νμ μν μμ μ νμ§ μμλ€λ κ²μ μ£Όλͺ©νλΌ
보νΈλ κΈ°λ₯ λ³κ²½μ λν λͺ¨λ μ½λλ₯Ό λΆμ¬λ£μ μ μμ΅λκΉ?
λ΄κ° μ΄ν΄νλμ§ μ λͺ¨λ₯΄κ² μ§λ§ μ 체 κΈ°λ₯μ 볡μ¬νμ΅λλ€ ...
μλνμ§ μμλ€. κ°μ λ¬Έμ κ° λ°μνμ΅λλ€ :/ . https://i.ibb.co/kHNW6fc/stockissue.jpg
μλ νμΈμ ν°μ΄λ
μ€λ μ¬μ©ν΄λ³Όκ²μ :)λλ λ³νμ μν μμ μ νμ§ μμλ€λ κ²μ μ£Όλͺ©νλΌ
보νΈλ κΈ°λ₯ λ³κ²½μ λν λͺ¨λ μ½λλ₯Ό λΆμ¬λ£μ μ μμ΅λκΉ?
λ΄κ° μ΄ν΄νλμ§ μ λͺ¨λ₯΄κ² μ§λ§ μ 체 κΈ°λ₯μ 볡μ¬νμ΅λλ€ ...
μλνμ§ μμλ€. κ°μ λ¬Έμ κ° λ°μνμ΅λλ€ :/ . https://i.ibb.co/kHNW6fc/stockissue.jpg
wp-content/plugins/woo-poly-integration/src/Hyyan/WPI/Product/Stock.phpμ κΈ°λ₯ λ³κ²½μ κ΄μ°μΌλ‘ λ°κΎΈμ ¨μ΅λκΉ?
λλ μ§κΈ ν λ¬ λμ κ·Έκ²μ μ¬μ©νκ³ νλμ λ¬Έμ κ° μμμ΅λλ€.
μλ νμΈμ ν°μ΄λ
μ€λ μ¬μ©ν΄λ³Όκ²μ :)λλ λ³νμ μν μμ μ νμ§ μμλ€λ κ²μ μ£Όλͺ©νλΌ
보νΈλ κΈ°λ₯ λ³κ²½μ λν λͺ¨λ μ½λλ₯Ό λΆμ¬λ£μ μ μμ΅λκΉ?
λ΄κ° μ΄ν΄νλμ§ μ λͺ¨λ₯΄κ² μ§λ§ μ 체 κΈ°λ₯μ 볡μ¬νμ΅λλ€ ...
μλνμ§ μμλ€. κ°μ λ¬Έμ κ° λ°μνμ΅λλ€ :/ . https://i.ibb.co/kHNW6fc/stockissue.jpg
wp-content/plugins/woo-poly-integration/src/Hyyan/WPI/Product/Stock.phpμ κΈ°λ₯ λ³κ²½μ κ΄μ°μΌλ‘ λ°κΎΈμ ¨μ΅λκΉ?
λλ μ§κΈ ν λ¬ λμ κ·Έκ²μ μ¬μ©νκ³ νλμ λ¬Έμ κ° μμμ΅λλ€.
μ.
μμ λ μλλ€μ...
@fkoomek @bmpf @Stibo @Tii λ μμ ν μμ μ μν΄ μ΄ λ체 Stock.php νμΌμ μ¬μ©ν΄ 보μμμ€.
κ°μ₯ μ μ©ν λκΈ
λ΄ Fixλ₯Ό νμΈνκ³ νλ¬κ·ΈμΈμμ Stock νμΌμ λ³κ²½ν μ μμ΅λλ€.
https://github.com/hyyan/woo-poly-integration/pull/300/files
μμ§ μΉμΈλμ§ μμμ§λ§ λ¬Έμ μμ΄ ν λ¬ λμ μ¬μ©νκ³ μμ΅λλ€.
μΈμ κ° κ·Έλ€μ΄ λ΄ pull μμ²μ μλ½νκΈ°λ₯Ό λ°λλλ€ ...