๋ฒ๊ทธ ์ค๋ช
๊ตฌํ
๋ฒ ๋ฅดํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉํฐ์ฌ์ดํธ(๋ด๋ถ ๋คํธ์ํฌ ์ฐ๊ฒฐ)์์ ๋ค๋ฅธ ์ฌ์ดํธ๋ก ๋ฐฐํฌ๋ ๊ฒ์๋ฌผ์ ์
๋ฐ์ดํธํ ๋ ๋ฉํ, ์ฉ์ด ๋ฑ์ ์
๋ฐ์ดํธ๊ฐ ํธ์๋์ง ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ฌธ์ ๋ 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์ธ ๊ฒฝ์ฐ ํด๋น ๋ฉ์๋๋ฅผ ์ค๋จํ์ฌ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ทธ๋ณด๋ค ๋ ํ๋ช
ํ ๋ฐฉ๋ฒ์ด ์์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ;)
์ด์จ๋ , ํ๋ฅญํ ํ๋ฌ๊ทธ์ธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ด์ฌ์ด ์์ผ์๋ฉด ์ด ๋ฌธ์ ์ ๋์์ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ฒ์ ๋จ๊ณ
์์๋๋ ํ๋
๋ฉํ, ์ฉ์ด ๋ฑ์ ์
๋ฐ์ดํธ ์ ๋ฐฐํฌ๋์ด์ผ ํฉ๋๋ค.
ํ๊ฒฝ์ ๋ณด
@lakrisgubben ๋งค์ฐ ์์ธํ ๋ฌธ์ ์ ์ด์ ๋ํ ์ฐ๊ตฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋๋จํ ๊ฐ์ฌํฉ๋๋ค! ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋์ง ํ์ธํ๊ธฐ ์ํด ๋ค์ ์ด์ ํ ๋ฆด๋ฆฌ์ค๋ก ๊ฐ์ ธ์ค๊ณ ์์ง๋ง PR์ ํ ์ ์๋ค๋ฉด ๊ฒํ ๋ฅผ ํตํด ๋ค์ ๋ฆด๋ฆฌ์ค๋ก ๊ธฐ๊บผ์ด ๊ฐ์ ธ๊ฐ ๊ฒ์ ๋๋ค. ๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค!
@jeffpaul ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค! ์ด์ ๋ํ PR์ ๋์๋๋ฆฌ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ํ์ง๋ง ๊ทธ๋ ๊ฒ ํ๊ธฐ ์ํด ์ฝ๋๋ฒ ์ด์ค์ ์ ํตํ ์ฌ๋์ด ์ฌ๋ฌ๋ถ ๋ชจ๋๊ฐ ๋ง์กฑํ ์ ์๋ ๋ฐฉ์์ผ๋ก ์์ ๋์๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค. :)
@lakrisgubben ์ด ๋ฌธ์ ๋ฅผ
์์งํ, ์ฐ๋ฆฌ๋ ๋๋ถ๋ถ ๊ตฌํ ๋ฒ ๋ฅดํฌ์ ์๋ ๋ฐฉ์์ ์์กดํ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ํ๋ฅญํ ์ ๊ทผ ๋ฐฉ์์ด ์๋์ง ํ์ ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์๋ ค์ง ๋ฌธ์ (์ฌ๊ธฐ์ ๋ํ ํ ์ค๋ ๋ ์ฐธ์กฐ: https://github.com/WordPress/gutenberg/issues/12903)์ด๋ฉฐ ์ ์ฌํ ์๋๋ฆฌ์ค์ ๋ํ ์ข์ ์ ๊ทผ ๋ฐฉ์์ ํ์ ํ๋ ค๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
๋ค์์ ๊ทํ์ ์ ๊ทผ ๋ฐฉ์๊ณผ ๋งค์ฐ ์ ์ฌํ ์ ์์ ๋๋ค.
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' )
์ ๊ฐ์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
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@lakrisgubben ์ด ๋ฌธ์ ๋ฅผ
์์งํ, ์ฐ๋ฆฌ๋ ๋๋ถ๋ถ ๊ตฌํ ๋ฒ ๋ฅดํฌ์ ์๋ ๋ฐฉ์์ ์์กดํ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ํ๋ฅญํ ์ ๊ทผ ๋ฐฉ์์ด ์๋์ง ํ์ ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์๋ ค์ง ๋ฌธ์ (์ฌ๊ธฐ์ ๋ํ ํ ์ค๋ ๋ ์ฐธ์กฐ: https://github.com/WordPress/gutenberg/issues/12903)์ด๋ฉฐ ์ ์ฌํ ์๋๋ฆฌ์ค์ ๋ํ ์ข์ ์ ๊ทผ ๋ฐฉ์์ ํ์ ํ๋ ค๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
๋ค์์ ๊ทํ์ ์ ๊ทผ ๋ฐฉ์๊ณผ ๋งค์ฐ ์ ์ฌํ ์ ์์ ๋๋ค.
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' )
์ ๊ฐ์get_post
๋ ID๋ ๊ฐ์ฒด๋ฅผ ํ์ฉํ๋ฏ๋กget_post( $post_id )
๋ฅผ ํธ์ถํ๋ ๊ฒ์ฒ๋ผ ๊ฐ๋จํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.์ด ์ ๊ทผ ๋ฐฉ์(๋๋ ์ฐ๋ ค ์ฌํญ)์ ๋ํด ์ง๋ฌธ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค. ์์ง ํ ์คํธํ์ง ์์์ง๋ง ์ด๋ก ์์ผ๋ก๋ ์ด๊ฒ์ด ์๋ํด์ผ ํ๊ณ ์ด์ค ์ ๋ฐ์ดํธ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ฐฉ์งํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.