job_id, ReviewStatus::NEEDS_REVIEW ); } return $status; }; Hooks::onFilter( 'wpml_tm_applied_job_status', 10, 2 ) ->then( spreadArgs( $applyReviewStatus ) ); } private static function addTranslationCompleteHook() { $isHoldToReviewMode = Fns::always( Option::getReviewMode() === 'before-publish' ); $isPostNewlyCreated = Fns::converge( Relation::equals(), [ Obj::prop( 'post_date' ), Obj::prop( 'post_modified' ) ] ); $setPostStatus = pipe( Maybe::of(), Fns::filter( $isHoldToReviewMode ), Fns::map( Post::get() ), Fns::filter( Logic::isNotNull() ), Fns::filter( $isPostNewlyCreated ), Fns::map( Obj::prop( 'ID' ) ), Fns::map( Post::setStatus( Fns::__, 'draft' ) ) ); Hooks::onAction( 'wpml_pro_translation_completed' ) ->then( spreadArgs( $setPostStatus ) ); } private static function addTranslationPreSaveHook() { $keepDraftPostsDraftIfNeedsReview = function ( $postArr, $job ) { if ( self::shouldBeReviewed( $job ) && isset( $postArr['ID'] ) && get_post_status( $postArr['ID'] ) === 'draft' ) { $postArr['post_status'] = 'draft'; } return $postArr; }; Hooks::onFilter( 'wpml_pre_save_pro_translation', 10, 2 ) ->then( spreadArgs( $keepDraftPostsDraftIfNeedsReview ) ); } /** * @param $job * * @return bool */ private static function shouldBeReviewed( $job ) { return ! Lst::includes( $job->element_type_prefix, self::$excluded_from_review ) && $job->automatic && (int) $job->original_doc_id !== (int) get_option( 'page_for_posts' ); } }