Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
woocommerce-multilingual
/
classes
/
Reviews
/
Translations
:
FrontEndHooks.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace WCML\Reviews\Translations; use IWPML_Action; use WPML\FP\Obj; use WPML\FP\Relation; class FrontEndHooks implements IWPML_Action { const CONTEXT = 'wcml-reviews'; const COMMENT_TYPE = 'review'; public function add_hooks() { /** * Allows disabling product reviews translation. * * @param bool $true */ if ( apply_filters( 'wcml_enable_product_review_translation', true ) ) { add_action( 'wp_insert_comment', [ $this, 'insertCommentAction' ], 10, 2 ); add_action( 'woocommerce_review_before', [ $this, 'translateReview' ] ); } } /** * @param int $commentId * @param \WP_Comment $comment */ public function insertCommentAction( $commentId, $comment ) { self::registerReviewString( $comment ); } /** * @param \WP_Comment|\stdClass $comment */ public function translateReview( $comment ) { if ( self::isNonEmptyReview( $comment ) ) { $reviewTranslation = apply_filters( 'wpml_translate_single_string', $comment->comment_content, self::CONTEXT, self::getReviewStringName( $comment ) ); if ( $reviewTranslation !== $comment->comment_content ) { $comment->is_translated = true; $comment->comment_content = $reviewTranslation; } } } /** * @param \WP_Comment|\stdClass $review */ public static function registerReviewString( $review ) { if ( self::isNonEmptyReview( $review ) ) { do_action( 'wpml_register_single_string', self::CONTEXT, self::getReviewStringName( $review ), $review->comment_content, false, Obj::prop( 'language_code', $review ) ?: apply_filters( 'wpml_current_language', null ) ); } } /** * @param \WP_Comment|\stdClass $comment * * @return bool */ private static function isNonEmptyReview( $comment ) { return Obj::prop( 'comment_content', $comment ) && Relation::propEq( 'comment_type', self::COMMENT_TYPE, $comment ); } /** * @param \WP_Comment|\stdClass $review * * @return string (e.g. "product/123/review/456") */ private static function getReviewStringName( $review ) { return 'product-' . Obj::prop( 'comment_post_ID', $review ) . '-review-' . Obj::prop( 'comment_ID', $review ); } }