45 lines
		
	
	
		
			971 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			971 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * WPML integration.
 | |
|  *
 | |
|  * @package Activitypub
 | |
|  */
 | |
| 
 | |
| namespace Activitypub\Integration;
 | |
| 
 | |
| /**
 | |
|  * Compatibility with the WPML Multilingual CMS plugin.
 | |
|  *
 | |
|  * @see https://wpml.org/
 | |
|  */
 | |
| class WPML {
 | |
| 	/**
 | |
| 	 * Initialize the class, registering WordPress hooks.
 | |
| 	 */
 | |
| 	public static function init() {
 | |
| 		\add_filter( 'activitypub_locale', array( self::class, 'get_wpml_post_locale' ), 10, 2 );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Fetch the post locale from the WPML post data.
 | |
| 	 *
 | |
| 	 * @param string $lang The language code.
 | |
| 	 * @param int    $post The post object.
 | |
| 	 *
 | |
| 	 * @return string The modified language code.
 | |
| 	 */
 | |
| 	public static function get_wpml_post_locale( $lang, $post ) {
 | |
| 		if ( ! $post instanceof \WP_Post ) {
 | |
| 			return $lang;
 | |
| 		}
 | |
| 
 | |
| 		$language_details = apply_filters( 'wpml_post_language_details', null, $post->ID );
 | |
| 
 | |
| 		if ( is_array( $language_details ) && isset( $language_details['language_code'] ) ) {
 | |
| 			$lang = $language_details['language_code'];
 | |
| 		}
 | |
| 
 | |
| 		return $lang;
 | |
| 	}
 | |
| }
 |