Distributor: NetworkSiteConnection::update_syndicated๊ฐ€ Gutenberg/REST ์ปจํ…์ŠคํŠธ์—์„œ ๋„ˆ๋ฌด ์ผ์ฐ ์‹คํ–‰๋จ

์— ๋งŒ๋“  2019๋…„ 10์›” 03์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: 10up/distributor

๋ฒ„๊ทธ ์„ค๋ช…
๊ตฌํ…๋ฒ ๋ฅดํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ€ํ‹ฐ์‚ฌ์ดํŠธ(๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ)์—์„œ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ๋กœ ๋ฐฐํฌ๋œ ๊ฒŒ์‹œ๋ฌผ์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ๋ฉ”ํƒ€, ์šฉ์–ด ๋“ฑ์˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ‘ธ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ ๋Š” NetworkSiteConnection ํด๋ž˜์Šค์˜ update_syndicated ๋ฉ”์„œ๋“œ๊ฐ€ save_post ์ž‘์—…์— ์—ฐ๊ฒฐ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํด๋ž˜์‹ ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ Gutenberg๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ฒŒ์‹œ๋ฌผ์ด REST-api๋ฅผ ํ†ตํ•ด ์ €์žฅ๋  ๋•Œ save_post ํ›„ํฌ๊ฐ€ ๋” ์ผ์ฐ ์‹คํ–‰๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ƒ๊ธฐ ์ฐพ๊ณ  update_item ์˜ ๋ฐฉ๋ฒ• WP_REST_Posts_Controller ํด๋ž˜์Šค ํ•œ ๊ฒƒ์€ ๋ณผ ์ˆ˜ wp_update_post ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ save_post ์กฐ์น˜๊ฐ€ ๋ผ์ธ 697์—๋ผ๊ณ  , ๋งŒํ•˜๋‹ค ๊ทธ ์ดํ›„ ๋ฉ”ํƒ€, ์šฉ์–ด ๋“ฑ REST-api์—์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Distributor๊ฐ€ update_item ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ฉ”ํƒ€, ์šฉ์–ด ๋“ฑ์ด ์•„์ง ์—…๋ฐ์ดํŠธ/์ €์žฅ๋˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ mu-plugin์— ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

add_action(
    'rest_after_insert_post',
    function( WP_Post $post ): void {
        \Distributor\InternalConnections\NetworkSiteConnection::update_syndicated( $post->ID );
    }
);

์ด๊ฒƒ์€ ๊ฒŒ์‹œ๋ฌผ์ด ์ €์žฅ ์‹œ ๋‘ ๋ฒˆ ๋ฐฐํฌ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์ ์ด ์•„๋‹ˆ๋ฉฐ ํฐ ๋ฌธ์ œ๋„ ์•„๋‹ˆ์ง€๋งŒ update_syndicated ๊ฐ€ ๋‘ ๋ฒˆ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ €์žฅ ์†๋„๊ฐ€ ์•ฝ๊ฐ„ ๋Š๋ ค์ง‘๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ตœ์„ ์˜ ํ•ด๊ฒฐ์ฑ…์ด ๊ตฌํ…๋ฒ ๋ฅดํฌ์™€ ํด๋ž˜์‹ ํŽธ์ง‘๊ธฐ ๋ชจ๋‘์—์„œ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  update_syndicated ๋ฉ”์„œ๋“œ( save_post ๋ฐ rest_after_insert_{$post_type} ์ž‘์—…์„ ํ†ตํ•ด ์ „์†ก๋œ ๋‹ค๋ฅธ ๊ฐ’์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์•ฝ๊ฐ„์˜ ์ˆ˜์ • ํฌํ•จ)๋ฅผ rest_after_insert_{$post_type} ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. show_in_rest = true์ธ ๋ชจ๋“  post_types์— ๋Œ€ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ update_syndicated ๋ฉ”์†Œ๋“œ๊ฐ€ ๋‘ ๋ฒˆ ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋งŒ ( ( defined( 'REST_REQUEST' ) && REST_REQUEST ) && doing_action( 'save_post' ) ) ์™€ ๊ฐ™์€ ๊ฒƒ์ด true์ธ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ์ค‘๋‹จํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ณด๋‹ค ๋” ํ˜„๋ช…ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ;)

์–ด์จŒ๋“ , ํ›Œ๋ฅญํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ์ด ๋ฌธ์ œ์— ๋„์›€์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

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

  1. WordPress ๋‹ค์ค‘ ์‚ฌ์ดํŠธ์—์„œ ์ตœ์†Œํ•œ ์ œ๋ชฉ, ์นดํ…Œ๊ณ ๋ฆฌ ๋ฐ ์ถ”์ฒœ ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ Gutenberg๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค. (์ค‘์š”, ๊ตฌํ…๋ฒ ๋ฅดํฌ์—์„œ ๋ ˆ๊ฑฐ์‹œ ๋ฉ”ํƒ€๋ฐ•์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. WP์—์„œ ๋‹ค๋ฅธ ์ €์žฅ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์—ฌ ์—ญํ˜ธํ™˜์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ด ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.)
  2. ์ด ๊ฒŒ์‹œ๋ฌผ์„ ๋„คํŠธ์›Œํฌ์˜ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์— ๋ฐฐํฌํ•˜๊ณ  ์ž˜ ๋ณด์ด๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
  3. ์ œ๋ชฉ, ์นดํ…Œ๊ณ ๋ฆฌ ๋ฐ ์ถ”์ฒœ ์ด๋ฏธ์ง€๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ๊ฒŒ์‹œ๋ฌผ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  4. ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์—์„œ ๋ฐฐํฌ๋œ ๊ฒŒ์‹œ๋ฌผ์„ ํ™•์ธํ•˜๊ณ  ์ œ๋ชฉ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์ง€๋งŒ ์นดํ…Œ๊ณ ๋ฆฌ๋‚˜ ์ถ”์ฒœ ์ด๋ฏธ์ง€๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
  5. ๊ฒŒ์‹œ๋ฌผ ์ œ๋ชฉ๋งŒ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  6. ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์—์„œ ๋ฐฐํฌ๋œ ๊ฒŒ์‹œ๋ฌผ์„ ํ™•์ธํ•˜์—ฌ ์ œ๋ชฉ์ด ๋ณ€๊ฒฝ๋˜๊ณ  3๋‹จ๊ณ„์—์„œ ์ €์žฅํ•œ ์นดํ…Œ๊ณ ๋ฆฌ ๋ฐ ์ถ”์ฒœ ์ด๋ฏธ์ง€๊ฐ€ ๋ฐฐํฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(5๋‹จ๊ณ„ ์‹คํ–‰ ์‹œ ์ด๋ฏธ ์ €์žฅํ•œ ์œ„์น˜์— ์žˆ์Œ).

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

๋ฉ”ํƒ€, ์šฉ์–ด ๋“ฑ์€ ์—…๋ฐ์ดํŠธ ์‹œ ๋ฐฐํฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ์ •๋ณด

  • ๋ฐฐํฌ์ž ๋ฒ„์ „: ๊ฐœ๋ฐœ ๋ถ„๊ธฐ์˜ ์ตœ์‹  ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.
  • ํ…Œ๋งˆ ๋ฐ ๋ฒ„์ „: Twenty Nineteen 1.4
  • ๊ธฐํƒ€ ์„ค์น˜๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ ๋ฒ„์ „: ์—†์Œ.
  • ์›Œ๋“œํ”„๋ ˆ์Šค 5.2.3

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

@lakrisgubben ์ด ๋ฌธ์ œ๋ฅผ

์†”์งํžˆ, ์šฐ๋ฆฌ๋Š” ๋Œ€๋ถ€๋ถ„ ๊ตฌํ…๋ฒ ๋ฅดํฌ์˜ ์ž‘๋™ ๋ฐฉ์‹์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ํ›Œ๋ฅญํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์žˆ๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์•Œ๋ ค์ง„ ๋ฌธ์ œ(์—ฌ๊ธฐ์— ๋Œ€ํ•œ ํ•œ ์Šค๋ ˆ๋“œ ์ฐธ์กฐ: https://github.com/WordPress/gutenberg/issues/12903)์ด๋ฉฐ ์œ ์‚ฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ์ข‹์€ ์ ‘๊ทผ ๋ฐฉ์‹์„ ํŒŒ์•…ํ•˜๋ ค๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๊ท€ํ•˜์˜ ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•œ ์ œ์•ˆ์ž…๋‹ˆ๋‹ค.

  • ํŠน์ • ๊ฒŒ์‹œ๋ฌผ์ด Gutenberg๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” is_using_gutenberg ๋„์šฐ๋ฏธ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. update_syndicate ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์‹œ๋ฌผ์ด Gutenberg๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ ‡๋‹ค๋ฉด rest_after_insert_{$post_type} ์—ฐ๊ฒฐ๋œ ๋™์ผํ•œ update_syndicate ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ƒˆ ์ž‘์—…์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ผ์ฐ ๋Œ์•„์™€์„œ ๋‚˜๋จธ์ง€ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ์ด์ค‘ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค).
  • ๋˜ํ•œ ์‹คํ–‰ ์ค‘์ธ ์ž‘์—…์„ ํ™•์ธํ•ด์•ผ ํ•˜๋ฏ€๋กœ rest_after_insert_{$post_type} ํ›„ํฌ์— ์˜ํ•ด update_syndicate ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ํ•ด๋‹น ์ง€์ ์—์„œ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. \Distributor\Utils\is_using_gutenberg( $post ) && doing_action( 'save_post' ) ์™€ ๊ฐ™์€
  • ๊ทธ๋ฆฌ๊ณ  ์ด ํ›„ํฌ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—(ํ•˜๋‚˜๋Š” ๊ฒŒ์‹œ๋ฌผ ID, ํ•˜๋‚˜๋Š” ๊ฒŒ์‹œ๋ฌผ ๊ฐ์ฒด) ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. get_post ๋Š” ID๋‚˜ ๊ฐ์ฒด๋ฅผ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ get_post( $post_id ) ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ์ ‘๊ทผ ๋ฐฉ์‹(๋˜๋Š” ์šฐ๋ ค ์‚ฌํ•ญ)์— ๋Œ€ํ•ด ์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ์•„์ง ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ด๋ก ์ƒ์œผ๋กœ๋Š” ์ด๊ฒƒ์ด ์ž‘๋™ํ•ด์•ผ ํ•˜๊ณ  ์ด์ค‘ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

@lakrisgubben ๋งค์šฐ ์ƒ์„ธํ•œ ๋ฌธ์ œ์™€ ์ด์— ๋Œ€ํ•œ ์—ฐ๊ตฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์ด์ •ํ‘œ ๋ฆด๋ฆฌ์Šค๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ์žˆ์ง€๋งŒ PR์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฒ€ํ† ๋ฅผ ํ†ตํ•ด ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๋กœ ๊ธฐ๊บผ์ด ๊ฐ€์ ธ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@jeffpaul ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด์— ๋Œ€ํ•œ PR์„ ๋„์™€๋“œ๋ฆฌ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์ •ํ†ตํ•œ ์‚ฌ๋žŒ์ด ์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘๊ฐ€ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. :)

@lakrisgubben ์ด ๋ฌธ์ œ๋ฅผ

์†”์งํžˆ, ์šฐ๋ฆฌ๋Š” ๋Œ€๋ถ€๋ถ„ ๊ตฌํ…๋ฒ ๋ฅดํฌ์˜ ์ž‘๋™ ๋ฐฉ์‹์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ํ›Œ๋ฅญํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์žˆ๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์•Œ๋ ค์ง„ ๋ฌธ์ œ(์—ฌ๊ธฐ์— ๋Œ€ํ•œ ํ•œ ์Šค๋ ˆ๋“œ ์ฐธ์กฐ: https://github.com/WordPress/gutenberg/issues/12903)์ด๋ฉฐ ์œ ์‚ฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ์ข‹์€ ์ ‘๊ทผ ๋ฐฉ์‹์„ ํŒŒ์•…ํ•˜๋ ค๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๊ท€ํ•˜์˜ ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•œ ์ œ์•ˆ์ž…๋‹ˆ๋‹ค.

  • ํŠน์ • ๊ฒŒ์‹œ๋ฌผ์ด Gutenberg๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” is_using_gutenberg ๋„์šฐ๋ฏธ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. update_syndicate ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์‹œ๋ฌผ์ด Gutenberg๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ ‡๋‹ค๋ฉด rest_after_insert_{$post_type} ์—ฐ๊ฒฐ๋œ ๋™์ผํ•œ update_syndicate ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ƒˆ ์ž‘์—…์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ผ์ฐ ๋Œ์•„์™€์„œ ๋‚˜๋จธ์ง€ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ์ด์ค‘ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค).
  • ๋˜ํ•œ ์‹คํ–‰ ์ค‘์ธ ์ž‘์—…์„ ํ™•์ธํ•ด์•ผ ํ•˜๋ฏ€๋กœ rest_after_insert_{$post_type} ํ›„ํฌ์— ์˜ํ•ด update_syndicate ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ํ•ด๋‹น ์ง€์ ์—์„œ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. \Distributor\Utils\is_using_gutenberg( $post ) && doing_action( 'save_post' ) ์™€ ๊ฐ™์€
  • ๊ทธ๋ฆฌ๊ณ  ์ด ํ›„ํฌ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—(ํ•˜๋‚˜๋Š” ๊ฒŒ์‹œ๋ฌผ ID, ํ•˜๋‚˜๋Š” ๊ฒŒ์‹œ๋ฌผ ๊ฐ์ฒด) ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. get_post ๋Š” ID๋‚˜ ๊ฐ์ฒด๋ฅผ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ get_post( $post_id ) ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ์ ‘๊ทผ ๋ฐฉ์‹(๋˜๋Š” ์šฐ๋ ค ์‚ฌํ•ญ)์— ๋Œ€ํ•ด ์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ์•„์ง ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ด๋ก ์ƒ์œผ๋กœ๋Š” ์ด๊ฒƒ์ด ์ž‘๋™ํ•ด์•ผ ํ•˜๊ณ  ์ด์ค‘ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@dkotter ์ž์„ธํ•œ ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๊ท€ํ•˜์˜ ์ œ์•ˆ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์ฐ”๋ €๊ณ  ์ด์ „์—๋Š” ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•œ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. :)

๊ฐ™์€ ๊ฒƒ์„ ์ถ”๊ฐ€

if ( \Distributor\Utils\is_using_gutenberg( $post ) && doing_action( 'save_post' ) ) {
    add_action( "rest_after_insert_{$post->post_type}", array( '\Distributor\InternalConnections\NetworkSiteConnection', 'update_syndicated' ) );
    return;
}

์‹ ๋””์ผ€์ดํŠธ๋œ ๊ธฐ์‚ฌ์˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ ˆ๊ฑฐ์‹œ ๋ฉ”ํƒ€๋ฐ•์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํด๋ž˜์‹ ํŽธ์ง‘๊ธฐ์™€ Gutenberg ๋ชจ๋‘์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ rest_after_insert_{$post->post_type} ํ›„ํฌ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š๋Š” ๋‚˜๋จธ์ง€ ์š”์ฒญ ์‹คํ–‰ ํ›„ ๋ณ„๋„์˜ ์‚ฌํ›„ ์š”์ฒญ ์‹คํ–‰์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ๊ฑฐ์‹œ ๋ฉ”ํƒ€๋ฐ•์Šค์™€ ํ•จ๊ป˜ ๊ตฌํ…๋ฒ ๋ฅดํฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ ˆ๊ฑฐ์‹œ ๋ฉ”ํƒ€๋ฐ•์Šค์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ์—…๋ฐ์ดํŠธ ์‹œ ์‹ ๋””์ผ€์ดํŠธ๋˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๋งํ–ˆ๋“ฏ์ด ์ด ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์—†๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ์œ„์˜ if ๋ฌธ์— ! isset( $_GET['meta-box-loader'] ) ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ตœ์†Œํ•œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Gutenberg ๋ฐ ๋ ˆ๊ฑฐ์‹œ ๋ฉ”ํƒ€๋ฐ•์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ๋œ ๊ฒŒ์‹œ๋ฌผ์ด ๋‘ ๋ฒˆ ์‹ ๋””์ผ€์ดํŠธ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋งŒ, ๋ถ€๋ถ„์ ์œผ๋กœ ์‹ ๋””์ผ€์ดํŠธ๋˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚ซ๊ณ  ํ˜„์žฌ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๊ฒƒ์„ update_syndicated ๋ฐฉ๋ฒ•์— ์ถ”๊ฐ€ํ•˜๋ฉด (ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ) ์ด ์ž‘์—…์„ ํด๋ž˜์‹ ํŽธ์ง‘๊ธฐ์™€ Gutenberg ๋ชจ๋‘์—์„œ ํ›Œ๋ฅญํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ๋ ˆ๊ฑฐ์‹œ ๋ฉ”ํƒ€๋ฐ•์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Gutenberg์—์„œ "๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค":

if ( \Distributor\Utils\is_using_gutenberg( $post ) && doing_action( 'save_post' ) && ! isset( $_GET['meta-box-loader'] ) ) {
    add_action( "rest_after_insert_{$post->post_type}", array( '\Distributor\InternalConnections\NetworkSiteConnection', 'update_syndicated' ) );
    return;
}

@dkotter ์ด ์†”๋ฃจ์…˜์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ฑฐ๋‚˜ ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋ฉด ์ด์— ๋Œ€ํ•œ PR์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@lakrisgubben ํ…Œ์ŠคํŠธํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” Gutenberg๊ฐ€ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”ํƒ€ ์ƒ์ž(๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฌธ์ œ๋ฅผ ์ผ์œผ์ผฐ์Œ)๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‘ ๊ฐ€์ง€ ์š”์ฒญ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ rest ํ›„ํฌ๊ฐ€ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์— ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. register_post_meta ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”ํƒ€๋ฅผ ๋“ฑ๋กํ•˜๊ณ  show_in_rest ๊ฐ’์ด true์ธ ๊ฒฝ์šฐ ์‹คํ–‰).

meta-box-loader ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”ํƒ€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ ํ•ญ์ƒ ์„ค์ •๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๊ทธ๊ฒƒ์— ์˜์กดํ•˜๋Š” ๊ฒƒ์€ ์ด์ƒ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ํ•ต์‹ฌ์ ์ธ ๋ฐฉ๋ฒ•์€ ์—†๋Š” ๊ฒƒ ๊ฐ™๊ณ  ๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ ‘๊ทผ ๋ฐฉ์‹์€ ํ›จ์”ฌ ๋” ๋น„์ด์ƒ์ ์œผ๋กœ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•จ๊ป˜ ํ•  ์‹œ๊ฐ„์ด ์žˆ๋‹ค๋ฉด PR์„ ํ…Œ์ŠคํŠธํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋…ธ๋ ฅ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

@dkotter PR ์ฒซ ํ†ต๊ณผ: https://github.com/10up/distributor/pull/518

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