Woo-poly-integration: ๊ฐ€๋ณ€ ์ œํ’ˆ์˜ ๋ฌธ์ œ

์— ๋งŒ๋“  2020๋…„ 11์›” 04์ผ  ยท  33์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: hyyan/woo-poly-integration

์•ˆ๋…•,

์ง€๋‚œ ์šฐ์ปค๋จธ์Šค ์—…๋ฐ์ดํŠธ ์ดํ›„ ๊ฐ€๋ณ€ ์ƒํ’ˆ์„ ํŽธ์ง‘ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œํ’ˆ ๋ฐ์ดํ„ฐ๋Š” "๋‹จ์ˆœ ์ œํ’ˆ"์„ ๋‚˜ํƒ€๋‚ด์ง€๋งŒ ์ œํ’ˆ์€ ๊ฐ€๋ณ€์ ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ Wordpress ํ…Œ๋งˆ(์˜ˆ: Storefront)์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

WooCommerce, Polylang ๋ฐ Hyyan WooCommerce Polylang ํ†ตํ•ฉ์„ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋น„ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์–ด๋–ค ์ œํ’ˆ ๋ฒ„์ „ ๋ฐ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

  • PHP:
  • ์›Œ๋“œํ”„๋ ˆ์Šค:
  • ์šฐ์ปค๋จธ์Šค:
  • Polylang: [Polylang PRO๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ƒํƒœ]
  • Hyyan WooCommerce Polylang ํ†ตํ•ฉ:
  • ๋ธŒ๋ผ์šฐ์ €:

๋ฒˆ์‹ ๋‹จ๊ณ„



    1. 1.
  1. 1.

๋‚ด๊ฐ€ ๊ธฐ๋Œ€ํ–ˆ๋˜ ๊ฒƒ

๋Œ€์‹  ์ผ์–ด๋‚œ ์ผ

์›Œ๋“œํ”„๋ ˆ์Šค ํ™˜๊ฒฝ

Copy and paste the system status report from **WooCommerce > System Status** in WordPress admin here.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ์ง€๊ธˆ #518์„ ๋˜๋Œ๋ ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์ค‘์— ์ž์„ธํžˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

๋ชจ๋“  33 ๋Œ“๊ธ€

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์–ธ์–ด์—์„œ ๋ณต์‚ฌํ•˜๋ฉด ๋ณ€ํ˜•์„ ๋ณต์‚ฌํ•  ๊ฐ€๋Šฅ์„ฑ ์—†์ด ๋‹จ์ˆœํ•œ ์ œํ’ˆ๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š”,

ํ”Œ๋Ÿฌ๊ทธ์ธ "jQuery Migrate Helper"๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๊นŒ?

์ €์žฅ์†Œ์—์„œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œ ์ฝ”๋“œ์—์„œ ์ง์ ‘ zip์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค. ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฃผ์— ์ด๊ฒƒ์„ ๋งŽ์ด ํ…Œ์ŠคํŠธํ•  ์˜ˆ์ •์ด์ง€๋งŒ ๋ชจ๋“  ํ”ผ๋“œ๋ฐฑ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

์ €์žฅ์†Œ์—์„œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œ ์ฝ”๋“œ์—์„œ ์ง์ ‘ zip์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค. ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฃผ์— ์ด๊ฒƒ์„ ๋งŽ์ด ํ…Œ์ŠคํŠธํ•  ์˜ˆ์ •์ด์ง€๋งŒ ๋ชจ๋“  ํ”ผ๋“œ๋ฐฑ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

zip์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  GitHub์—์„œ ์„ค์น˜ํ•œ ํ›„ 2๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
1) ๊ธฐ๋ณธ ์–ธ์–ด์—์„œ ๋ณด์กฐ ์–ธ์–ด๋กœ ์ œํ’ˆ์„ ๋ณต์‚ฌํ•˜๋ฉด ๋งŽ์€ ๋ณ€ํ˜•์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
2) ๊ณ ๊ฐ๋‹˜ ์ฃผ๋ฌธ ํ›„, ์žฌ๊ณ ๊ฐ€ ๋‚จ์•„๋„ ํ’ˆ์ ˆ๋˜๋Š” ์ƒํ’ˆ์ž…๋‹ˆ๋‹ค.

1. If I copy a product from the primary language into the secondary it creates many variations, (example if I have a product with 2 colors, the second language creates 10 variations from the color)

ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ GitHub ๋ฒ„์ „๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์‹  PR #518์ด ๊ฐ€๋ณ€ ์ œํ’ˆ๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ์„ ๋ง์นœ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ์ฃผ์ œ๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ฌธ์ œ๋Š” ๋ฉ”ํƒ€ ์†์„ฑ์˜ ์ฒ ์ž ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ ์ฟผ๋ฆฌ๋กœ ํ•ด๊ฒฐํ•˜๊ณ  src/Hyyan/WPI/Plugin.php์—์„œ ์ด๋ฆ„์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
@mrleemon ๋‚˜๋Š” ๋‹น์‹ ์ด ์ด ํ”„๋กœ์ ํŠธ์˜ ๊ณต๋™ ์ž‘์—…์ž

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ž˜์ „์— ์˜คํƒ€์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ˆ˜์ • ์‚ฌํ•ญ๋งŒ ์ปค๋ฐ‹ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋‚ด๋ถ€ ์ž‘๋™์— ๋Œ€ํ•œ ๋‚˜์˜ ์ง€์‹์€ ๊ฑฐ์˜ 0์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.
์ด ๋ณ€ํ˜• ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•„๋Š” ์‚ฌ๋žŒ์€ @Jon007๋ฟ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

#518์—๋Š” ๊ธฐ์กด ์‚ฌ์ดํŠธ๊ฐ€ ์†์ƒ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ #450์—์„œ ์ด๋ฏธ ๊ฑฐ๋ถ€ํ•œ ์ด ์˜คํƒ€ ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณด์•˜์ง€๋งŒ @hyyan ์€ ์ด๋ฅผ ์ˆ˜๋ฝํ–ˆ์Šต๋‹ˆ๋‹ค...

๋‚˜๋Š” ์ง€๊ธˆ #518์„ ๋˜๋Œ๋ ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์ค‘์— ์ž์„ธํžˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

๊ฐ์‚ฌ ํ•ด์š”!

ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ง€์†์ ์ธ WooCommerce ๋ฆด๋ฆฌ์Šค์— ์ทจ์•ฝํ•œ ํ˜„์žฌ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐฉ์‹ ๋Œ€์‹  ๊ณต์‹ Polylang pll_copy_taxonomies ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ WooCommerce ๋ถ„๋ฅ˜(product_type, product_visibility ๋ฐ ๊ธฐํƒ€)๋ฅผ ๋™๊ธฐํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด๋ฏธ Polylang pll_copy_post_metas ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œํ’ˆ ๋ฉ”ํƒ€๋ฅผ ๋ณต์‚ฌํ•˜๋ฏ€๋กœ pll_copy_taxonomies ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œํ’ˆ ๋ถ„๋ฅ˜๋ฅผ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

์ด ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋™๊ธฐํ™”ํ•˜๊ฑฐ๋‚˜ ๋ณต์‚ฌํ•˜๋ ค๋Š” ๋ถ„๋ฅ˜๋ฒ•์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Polylang์€ ์ƒˆ ๋ฒˆ์—ญ์„ ๋งŒ๋“ค ๋•Œ ํ•ด๋‹น ๋ถ„๋ฅ˜๋ฒ• ๋ฐ ๊ด€๋ จ ์šฉ์–ด์˜ ๋™๊ธฐํ™”/๋ณต์‚ฌ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ณด์•˜์ง€๋งŒ ์šฐ์ปค๋จธ์Šค๊ฐ€ ์ž์ฒด API์™€ ์ž์ฒด ํ…Œ์ด๋ธ”๋กœ ๋” ๋งŽ์ด ์ด๋™ํ•จ์— ๋”ฐ๋ผ ์ œํ’ˆ์„ ๊ฒŒ์‹œ๋ฌผ๋กœ ์ทจ๊ธ‰ํ•˜๊ณ  ์ผ๋ฐ˜ ๊ฒŒ์‹œ๋ฌผ ๊ธฐ๋ฐ˜ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์˜์กดํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜๋ฉด์„œ ์ด ๋ชจ๋“  ๊ฒƒ์ด ์œ„ํ—˜ํ•  ์ •๋„๋กœ ๊ตฌ์‹์œผ๋กœ ๋ฐ”๋€Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๊ปํ•ด์•ผ ์šฐ์ปค๋จธ์Šค ์บ์‹ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋„ค, ์••๋‹ˆ๋‹ค. WC API ๋ณ€๊ฒฝ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์ž„์‹œ ์†”๋ฃจ์…˜์œผ๋กœ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ•œํŽธ, Meta.php ์˜ JS ์ฝ”๋“œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜์—ฌ ์ œํ’ˆ์ด ๊ฐ€๋ณ€์ ์ผ ๋•Œ "๋‹จ์ˆœ ์ œํ’ˆ"์˜ ์ž˜๋ชป๋œ ์„ ํƒ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์—์„œ:

$code = sprintf(
    '// <![CDATA[ %1$s'
    . ' addLoadEvent(function () { %1$s'
    . '  jQuery("#product-type option")'
    . '     .removeAttr("selected");%1$s'
    . '  jQuery("#product-type option[value=\"%2$s\"]")'
    . '    .attr("selected", "selected");%1$s'
    . '})'
    . '// ]]>', PHP_EOL, $type[0]
);

์—๊ฒŒ:

$code = sprintf(
    '// <![CDATA[ %1$s'
    . ' addLoadEvent(function () { %1$s'
    . '  jQuery("#product-type option")'
    . '     .prop("selected", false);%1$s'
    . '  jQuery("#product-type option[value=\"%2$s\"]")'
    . '     .prop("selected", true);%1$s'
    . '})'
    . '// ]]>', PHP_EOL, $type[0]
);

๋ถ„๋ช…ํžˆ ์˜ต์…˜์„ ์„ ํƒ/์„ ํƒ ํ•ด์ œํ•˜๊ธฐ ์œ„ํ•ด attr() ๋ฐ removeAttr() ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ WP์˜ jQuery ์ตœ๊ทผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

https://jquery.com/upgrade-guide/3.0/์—์„œ :

Breaking change: .removeAttr() no longer sets properties to false

Prior to jQuery 3.0, using .removeAttr() on a boolean attribute such as checked, selected, or readonly would also set the corresponding named property to false. This behavior was required for ancient versions of Internet Explorer but is not correct for modern browsers because the attribute represents the initial value and the property represents the current (dynamic) value.

It is almost always a mistake to use .removeAttr( "checked" ) on a DOM element. The only time it might be useful is if the DOM is later going to be serialized back to an HTML string. In all other cases, .prop( "checked", false ) should be used instead.

๋˜ํ•œ ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ WC ๋ณต์ œ ์ œํ’ˆ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ œํ’ˆ ์œ ํ˜•์ด ๋ณต์ œ๋ณธ์— ๋ณต์‚ฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Duplicator.php ์˜ unlinkOrginalProductTranslations() ํ•จ์ˆ˜์— ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜์—ฌ "๊ณ ์ •"ํ–ˆ์Šต๋‹ˆ๋‹ค.

$type = $product->get_type();
update_post_meta($duplicate->get_id(), '_translation_porduct_type', $type);

๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

'_translation_porduct_type'์„ ์™„์ „ํžˆ ์—†์• ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ•„์š”ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋ฌธ์ œ์— ๋Œ€์ฒ˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๊ณ  ์ œ์•ˆํ•œ ๋Œ€๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•ด ๋ฌป๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฒˆ์—ญ๋œ ์ œํ’ˆ ์œ ํ˜•์ด _translation_porduct_type ์ €์žฅ๋˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํ•„์š”ํ•  ๋•Œ ์›๋ž˜ ์ œํ’ˆ์—์„œ ์ง์ ‘ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

polylang์„ ๋ฒˆ์—ญํ•  ๋•Œ ์ด์ „ ์ œํ’ˆ์„ ์š”์ฒญํ•  ๋•Œ ๋ฒˆ์—ญ๋œ ์ œํ’ˆ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ตœ์†Œํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์—์„œ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์žกํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

_translation_porduct_type ๋ฉ”ํƒ€๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด wp_insert_post ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์†”๋ฃจ์…˜์— ์˜์กดํ•˜๋Š” ๋Œ€์‹  WC API WC_Product:save() ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒˆ์—ญ์„ ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜์ง€๋งŒ ์ด๋Š” Meta.php ์— ์žˆ๋Š” ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์…จ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” #430์— ๋Œ€ํ•œ ์„ค๋ช…์„ ํฌํ•จํ•˜์—ฌ Variable ์ œํ’ˆ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์†”๋ฃจ์…˜์„ ์•ฝ์†ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ์ตœ์‹  ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋‚จ์•„ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ‹ฐ์ผ“์ด ์™„์ „ํžˆ ์ค‘๋ณต๋˜์–ด ๋”ฐ๋ผ๊ฐ€๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—…ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๊ธฐํšŒ๊ฐ€ ๋˜๋ฉด ์ตœ์‹  ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ตœ์‹  ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•œ ํ›„ ๋ฌธ์ œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/hyyan/woo-poly-integration/issues/526

@hyyan @mrleemon ์ง€๋‚œ ์ฃผ์— ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜๊ณ  5.1๋กœ ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ ๋‹ค์Œ ์— ๋Œ€ํ•œ meta.php ํ˜ธ์ถœ์„ ์ฃผ์„ @mrleemon์ด ์ˆ˜์ •ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
$this->syncSelectedproductType( $ID );

์ด์ „์—๋Š” ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์ ์–ด๋„ 5.0์—์„œ๋Š” ์ •ํ™•ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  1. WordPress๊ฐ€ ๊ฒŒ์‹œ๋ฌผ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  2. woopoly๋Š” ๊ฒŒ์‹œ๋ฌผ์„ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ WooCommerce๋Š” ์•„์ง ์ €์žฅ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ œํ’ˆ ์œ ํ˜•์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ €์žฅ๋˜๊ณ  ๋™๊ธฐํ™”๋˜์ง€ ์•Š์Œ)
  3. WooCommerce๋Š” ์ œํ’ˆ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค
  4. [๋ณ€์ˆ˜ ์ œํ’ˆ์˜ ๊ฒฝ์šฐ WooCommerce๋Š” ๋ณ€ํ˜•์„ ์ €์žฅํ•˜๊ณ  Woopoly๋Š” ์ด๋ฅผ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.]
  5. ์ œํ’ˆ ๋ฒˆ์—ญ์„ ๋ณผ ๋•Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ˆ˜์ •์€ _translation_porduct_type์— ์ œํ’ˆ ์œ ํ˜•์„ ํ‘œ์‹œํ•˜๋„๋ก ์–‘์‹์„ ์žฌ์„ค์ •ํ•˜์—ฌ ๋ฒˆ์—ญ์„ ์ €์žฅํ•  ๋•Œ ์ •ํ™•ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ์ˆ˜์ •์€ ์ด์ œ WooCommerce ์ €์žฅ ์งํ›„ ํ›„ํฌ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋น ๋ฅธ ํŽธ์ง‘(#549) ๋ฐ ๋Œ€๋Ÿ‰ ํŽธ์ง‘์—์„œ๋„ ์ž‘๋™ํ•˜๋„๋ก ์กฐ์ •๋˜์–ด ์ œํ’ˆ ์œ ํ˜• ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ด๊ฒƒ์ด ๋์ด ์•„๋‹™๋‹ˆ๋‹ค. woo api๋งŒ ์‚ฌ์šฉํ•˜๊ณ  wp api๋ฅผ ํ”ผํ•˜๋ ค๋ฉด ์ „์ฒด๋ฅผ ๋‹ค์‹œ ๊ฒ€ํ† ํ•ด์•ผ ํ•˜์ง€๋งŒ ์ผ๋ถ€ ์ด์ƒํ•œ ๋™์ž‘์€ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—„์ฒญ๋‚œ! ๊ทธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ˆ˜์ •์€ ์ •๋ง ๋”์ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด ์ฒ ์ž๊ฐ€ ์ž˜๋ชป๋œ _translation_porduct_type ๋ฉ”ํƒ€๋„ ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?
์‹œ๊ฐ„์ด ์žˆ์„ ๋•Œ ์ด ์—…๋ฐ์ดํŠธ๋œ ๋ฒ„์ „์„ ํ…Œ์ŠคํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!

์ง€๊ธˆ์€ ์ฒ ์ž๊ฐ€ ํ‹€๋ฆฐ _translation_porduct_type ๋ฉ”ํƒ€ ํ• ๋‹น์„ ๋‚จ๊ฒจ๋‘์—ˆ์ง€๋งŒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ฒ„์ „์ด ๊ดœ์ฐฎ์œผ๋ฉด ํ›„์† ๋ฆด๋ฆฌ์Šค์—์„œ ์ด ์ฝ”๋“œ์™€ ๊ธฐํƒ€ ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ƒˆ ๋ฒ„์ „์„ ํ…Œ์ŠคํŠธํ•œ ๊ฒฐ๊ณผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ์„ธ ๊ฐ€์ง€ ์–ธ์–ด(์ŠคํŽ˜์ธ์–ด, ์˜์–ด ๋ฐ ํ”„๋ž‘์Šค์–ด)๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ŠคํŽ˜์ธ์–ด๊ฐ€ ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค. Woopoly์˜ "์ œํ’ˆ ์œ ํ˜•"๋™๊ธฐํ™” ์˜ต์…˜์ด ์„ ํƒ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ŠคํŽ˜์ธ์–ด๋กœ ์‹ ์ƒํ’ˆ ์ถ”๊ฐ€
  3. "๊ทธ๋ฃนํ™”๋œ ์ œํ’ˆ"(๋˜๋Š” "๋‹จ์ˆœ ์ œํ’ˆ"์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์ œํ’ˆ ์œ ํ˜•)์„ ์„ ํƒํ•˜๊ณ  ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  4. ์ œํ’ˆ ์œ ํ˜• ๋“œ๋กญ๋‹ค์šด์—๋Š” ์„ ํƒํ•œ ์ œํ’ˆ ์œ ํ˜•์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  5. "Languages" ๋ฉ”ํƒ€๋ฐ•์Šค์—์„œ "+" ๋งํฌ๋ฅผ ํด๋ฆญํ•˜์—ฌ ๋ฒˆ์—ญ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  6. ์ƒˆ ๋ฒˆ์—ญ์˜ ์ œํ’ˆ ์œ ํ˜• ๋“œ๋กญ๋‹ค์šด์€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€๋งŒ("์ œํ’ˆ ์œ ํ˜•" ๋™๊ธฐํ™” ์˜ต์…˜์ด ์„ ํƒ๋จ) ๊ธฐ๋ณธ ์–ธ์–ด ์ œํ’ˆ์—์„œ ์„ ํƒํ•œ ์ œํ’ˆ ์œ ํ˜• ๋Œ€์‹  "๋‹จ์ˆœ ์ œํ’ˆ"์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ธฐ์กด ์ œํ’ˆ์˜ ์ œํ’ˆ ์œ ํ˜•(๋ฐ ๊ธฐํƒ€ ์†์„ฑ)์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

@mrleemon ์ฒดํฌ์ธ: woo hook์ด ์•„์ง ์‹คํ–‰๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— wordpress hook์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ์ƒˆ๋กœ์šด ๋ฒˆ์—ญ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์•Œ์•˜์–ด ๊ณ ๋งˆ์›Œ!
๋‚˜์ค‘์— ์‹œ๊ฐ„์ด ๋˜๋ฉด ํ…Œ์ŠคํŠธํ•ด๋ณด๊ณ  ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๋‹ค์‹œ ์—ฐ๋ฝ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ์ƒˆ ๋ฒ„์ „์„ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ์ƒˆ ๋ฒˆ์—ญ ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ฐ์‚ฌ ํ•ด์š”!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰