diff --git a/docs/snippets.md b/docs/snippets.md index 5627f6eff..1c2a438aa 100644 --- a/docs/snippets.md +++ b/docs/snippets.md @@ -94,11 +94,27 @@ add_action( 'plugins_loaded', function() { * * This filter is used to filter the arguments sent to the remote server during a push. The below code snippet passes the original published date to the new pushed post and sets the same published date instead of setting it as per the current time. */ -add_filter( 'dt_push_post_args', function( $post_body, $post ) { - $post_body['post_date'] = $post->post_date; +add_filter( 'dt_push_post_args', function( $post_body, $post, $args, $connection ) { + + // When pushing to an external connection, we use the REST API, so the name of the field is `date`. + // But when pushing to an internal connection, the attributes are sent to wp_insert_post, which expects `post_date`. + $field_prefix =( $connection instanceof \Distributor\ExternalConnections\WordPressExternalConnection ) ? '' : 'post_'; + + $post_body[ $field_prefix . 'date'] = $post->post_date; + $post_body[ $field_prefix . 'date_gmt'] = $post->post_date_gmt; return $post_body; -}, 10, 2 ); +}, 10, 4 ); + +/** + * This filters the the arguments passed into wp_insert_post during a pull + */ +add_filter( 'dt_pull_post_args', function( $post_array, $remote_id, $post ) { + $post_array['post_date'] = $post->post_date; + $post_array['post_date_gmt'] = $post->post_date_gmt; + + return $post_array; +}, 10, 3 ); ``` ### Automatically unlink posts