diff --git a/includes/class-sp-wpml.php b/includes/class-sp-wpml.php index c6f8fbc8..f4279f32 100644 --- a/includes/class-sp-wpml.php +++ b/includes/class-sp-wpml.php @@ -5,7 +5,7 @@ * The SportsPress WPML class handles all WPML-related localization hooks. * * @class SP_WPML - * @version 1.1.9 + * @version 1.3 * @package SportsPress/Classes * @category Class * @author ThemeBoy @@ -25,39 +25,41 @@ class SP_WPML { */ public function __construct() { add_filter( 'the_title', array( $this, 'the_title' ), 5, 2 ); - add_filter( 'post_type_link', array( $this, 'post_type_link' ), 5, 2 ); + add_filter( 'post_type_link', array( $this, 'post_type_link' ), 5, 3 ); } public static function the_title( $title, $id = null ) { - if ( self::can_localize( $id, get_post_type( $id ) ) ): + if ( self::can_localize( $id, $id ) ): // Get translated post ID $translated_id = icl_object_id( $id, 'any', false, ICL_LANGUAGE_CODE ); if ( $translated_id ): $post = get_post( $translated_id ); - $title = $post->post_title; + if ( $post ) $title = $post->post_title; endif; endif; return $title; } - public static function post_type_link( $url, $post ) { - if ( self::can_localize( $post->ID, $post->post_type ) ): - // Get translated post ID - $translated_id = icl_object_id( $post->ID, 'any', false, ICL_LANGUAGE_CODE ); + public static function post_type_link( $url, $post, $leavename ) { + if ( self::can_localize( $post ) ): + // Get post ID + $id = $post->ID; - if ( $translated_id ): - $url .= '?lang=ja'; - //$url = get_permalink( $translated_id ); + // Get translated post ID + $translated_id = icl_object_id( $id, 'any', false, ICL_LANGUAGE_CODE ); + + if ( $translated_id && $translated_id != $id ): + return get_permalink( $translated_id, $leavename ); endif; endif; return $url; } - public static function can_localize( $id, $post_type ) { - return ( function_exists( 'icl_object_id' ) && is_sp_post_type( $post_type ) && $id != get_the_ID() ); + public static function can_localize( $post, $id = null ) { + return function_exists( 'icl_object_id' ) && is_sp_post_type( get_post_type( $post ) ) && $id != get_the_ID(); } }