/** * @covers WPGlobus_Core::translate_wp_post */ public function test_translate_wp_post() { /** * We are using a mock, so need this to please the lint * @var WP_Post $post */ /** * Default behavior (no parameters) */ $post = $this->getMock('WP_Post'); $post->post_title = '{:en}post_title EN{:}{:ru}post_title RU{:}'; $post->post_content = '{:en}post_content EN{:}{:ru}post_content RU{:}'; $post->post_excerpt = '{:en}post_excerpt EN{:}{:ru}post_excerpt RU{:}'; /** * nav-menu's additional fields do not exist in the WP_Post class */ /** @noinspection PhpUndefinedFieldInspection */ $post->title = '{:en}title EN{:}{:ru}title RU{:}'; /** @noinspection PhpUndefinedFieldInspection */ $post->attr_title = '{:en}attr_title EN{:}{:ru}attr_title RU{:}'; WPGlobus_Core::translate_wp_post($post); self::assertEquals('post_title EN', $post->post_title, 'post_title'); self::assertEquals('post_content EN', $post->post_content, 'post_content'); self::assertEquals('post_excerpt EN', $post->post_excerpt, 'post_excerpt'); /** @noinspection PhpUndefinedFieldInspection */ self::assertEquals('title EN', $post->title, 'title'); /** @noinspection PhpUndefinedFieldInspection */ self::assertEquals('attr_title EN', $post->attr_title, 'attr_title'); unset($post); /** * Translate to a language other than the current one */ $post = $this->getMock('WP_Post'); $post->post_title = '{:en}post_title EN{:}{:ru}post_title RU{:}'; WPGlobus_Core::translate_wp_post($post, 'ru'); self::assertEquals('post_title RU', $post->post_title, 'post_title'); unset($post); /** * Translate to a non-existing language - return in default language */ $post = $this->getMock('WP_Post'); $post->post_title = '{:en}post_title EN{:}{:ru}post_title RU{:}'; $post->post_content = '{:en}post_content EN{:}{:xx}post_content XX{:}'; WPGlobus_Core::translate_wp_post($post, 'xx'); self::assertEquals('post_title EN', $post->post_title, 'post_title'); self::assertEquals('post_content XX', $post->post_content, 'post_content'); unset($post); /** * Repeated attempt to translate has no effect, when called with no parameters, * because we pass the post object by reference */ $post = $this->getMock('WP_Post'); $post->post_title = '{:en}post_title EN{:}{:ru}post_title RU{:}'; WPGlobus_Core::translate_wp_post($post, 'en'); self::assertEquals('post_title EN', $post->post_title, 'post_title'); WPGlobus_Core::translate_wp_post($post, 'ru'); self::assertEquals('post_title EN', $post->post_title, 'post_title'); unset($post); }
/** * Filter @see get_pages * @qa See a list of available pages in the "Parent Page" metabox when editing a page. * * @param WP_Post[] $pages * * @return WP_Post[] */ public static function filter__get_pages($pages) { foreach ($pages as &$_page) { WPGlobus_Core::translate_wp_post($_page, WPGlobus::Config()->language); } unset($_page); reset($pages); return $pages; }