210 lines
6.1 KiB
PHP
210 lines
6.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Multilingual Compatibility.
|
|
*
|
|
* @link https://plugins360.com
|
|
* @since 3.0.0
|
|
*
|
|
* @package All_In_One_Video_Gallery
|
|
*/
|
|
|
|
// Exit if accessed directly
|
|
if ( ! defined( 'WPINC' ) ) {
|
|
die;
|
|
}
|
|
|
|
/**
|
|
* AIOVG_Public_Multilingual class.
|
|
*
|
|
* @since 3.0.0
|
|
*/
|
|
class AIOVG_Public_Multilingual {
|
|
|
|
/**
|
|
* Add custom rewrite rules.
|
|
*
|
|
* @since 4.2.2
|
|
*/
|
|
public function init() {
|
|
if ( ! function_exists( 'pll_current_language' ) && ! function_exists( 'pll_get_post_translations' ) ) {
|
|
return;
|
|
}
|
|
|
|
$pll_current_language = pll_current_language();
|
|
if ( ! empty( $pll_current_language ) ) {
|
|
return;
|
|
}
|
|
|
|
$page_settings = aiovg_get_option( 'aiovg_page_settings' );
|
|
$site_url = home_url();
|
|
|
|
// Single category page
|
|
if ( ! empty( $page_settings['category'] ) ) {
|
|
$id = (int) $page_settings['category'];
|
|
$translations = pll_get_post_translations( $id );
|
|
|
|
foreach ( $translations as $lang => $post_id ) {
|
|
$post = get_post( $post_id );
|
|
|
|
if ( $post && 'publish' === $post->post_status ) {
|
|
$permalink = get_permalink( $post_id );
|
|
|
|
if ( $permalink ) {
|
|
$slug = str_replace( $site_url, '', $permalink );
|
|
$slug = trim( $slug, '/' );
|
|
$slug = urldecode( $slug );
|
|
|
|
add_rewrite_rule( "^$slug/([^/]+)/page/?([0-9]{1,})/?$", 'index.php?page_id=' . $post_id . '&aiovg_category=$matches[1]&paged=$matches[2]', 'top' );
|
|
add_rewrite_rule( "^$slug/([^/]+)/?$", 'index.php?page_id=' . $post_id . '&aiovg_category=$matches[1]', 'top' );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Single tag page
|
|
if ( ! empty( $page_settings['tag'] ) ) {
|
|
$id = (int) $page_settings['tag'];
|
|
$translations = pll_get_post_translations( $id );
|
|
|
|
foreach ( $translations as $lang => $post_id ) {
|
|
$post = get_post( $post_id );
|
|
|
|
if ( $post && 'publish' === $post->post_status ) {
|
|
$permalink = get_permalink( $post_id );
|
|
|
|
if ( $permalink ) {
|
|
$slug = str_replace( $site_url, '', $permalink );
|
|
$slug = trim( $slug, '/' );
|
|
$slug = urldecode( $slug );
|
|
|
|
add_rewrite_rule( "^$slug/([^/]+)/page/?([0-9]{1,})/?$", 'index.php?page_id=' . $post_id . '&aiovg_tag=$matches[1]&paged=$matches[2]', 'top' );
|
|
add_rewrite_rule( "^$slug/([^/]+)/?$", 'index.php?page_id=' . $post_id . '&aiovg_tag=$matches[1]', 'top' );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// User videos page
|
|
if ( ! empty( $page_settings['user_videos'] ) ) {
|
|
$id = (int) $page_settings['user_videos'];
|
|
$translations = pll_get_post_translations( $id );
|
|
|
|
foreach ( $translations as $lang => $post_id ) {
|
|
$post = get_post( $post_id );
|
|
|
|
if ( $post && 'publish' === $post->post_status ) {
|
|
$permalink = get_permalink( $post_id );
|
|
|
|
if ( $permalink ) {
|
|
$slug = str_replace( $site_url, '', $permalink );
|
|
$slug = trim( $slug, '/' );
|
|
$slug = urldecode( $slug );
|
|
|
|
add_rewrite_rule( "^$slug/([^/]+)/page/?([0-9]{1,})/?$", 'index.php?page_id=' . $post_id . '&aiovg_user=$matches[1]&paged=$matches[2]', 'top' );
|
|
add_rewrite_rule( "^$slug/([^/]+)/?$", 'index.php?page_id=' . $post_id . '&aiovg_user=$matches[1]', 'top' );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Player page
|
|
if ( ! empty( $page_settings['player'] ) ) {
|
|
$id = (int) $page_settings['player'];
|
|
$translations = pll_get_post_translations( $id );
|
|
|
|
foreach ( $translations as $lang => $post_id ) {
|
|
$post = get_post( $post_id );
|
|
|
|
if ( $post && 'publish' === $post->post_status ) {
|
|
$permalink = get_permalink( $post_id );
|
|
|
|
if ( $permalink ) {
|
|
$slug = str_replace( $site_url, '', $permalink );
|
|
$slug = trim( $slug, '/' );
|
|
$slug = urldecode( $slug );
|
|
|
|
add_rewrite_rule( "^$slug/id/([^/]+)/?$", 'index.php?page_id=' . $post_id . '&aiovg_type=id&aiovg_video=$matches[1]', 'top' );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Video form page
|
|
if ( ! empty( $page_settings['video_form'] ) ) {
|
|
$id = (int) $page_settings['video_form'];
|
|
$translations = pll_get_post_translations( $id );
|
|
|
|
foreach ( $translations as $lang => $post_id ) {
|
|
$post = get_post( $post_id );
|
|
|
|
if ( $post && 'publish' === $post->post_status ) {
|
|
$permalink = get_permalink( $post_id );
|
|
|
|
if ( $permalink ) {
|
|
$slug = str_replace( $site_url, '', $permalink );
|
|
$slug = trim( $slug, '/' );
|
|
$slug = urldecode( $slug );
|
|
|
|
add_rewrite_rule( "^$slug/edit/([^/]+)/?$", 'index.php?page_id=' . $post_id . '&aiovg_action=edit&aiovg_video=$matches[1]', 'top' );
|
|
add_rewrite_rule( "^$slug/delete/([^/]+)/?$", 'index.php?page_id=' . $post_id . '&aiovg_action=delete&aiovg_video=$matches[1]', 'top' );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Single playlist page
|
|
if ( ! empty( $page_settings['playlist'] ) ) {
|
|
$id = (int) $page_settings['playlist'];
|
|
$translations = pll_get_post_translations( $id );
|
|
|
|
foreach ( $translations as $lang => $post_id ) {
|
|
$post = get_post( $post_id );
|
|
|
|
if ( $post && 'publish' === $post->post_status ) {
|
|
$permalink = get_permalink( $post_id );
|
|
|
|
if ( $permalink ) {
|
|
$slug = str_replace( $site_url, '', $permalink );
|
|
$slug = trim( $slug, '/' );
|
|
$slug = urldecode( $slug );
|
|
|
|
add_rewrite_rule( "^$slug/([^/]+)/?$", 'index.php?page_id=' . $post_id . '&aiovg_playlist=$matches[1]', 'top' );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* [Polylang] Filter the 'aiovg_page_settings' option.
|
|
*
|
|
* @since 3.0.0
|
|
* @param array $settings Default settings array.
|
|
* @return array $settings Filtered array of settings.
|
|
*/
|
|
public function filter_page_settings_for_polylang( $settings ) {
|
|
if ( ! function_exists( 'pll_current_language' ) && ! function_exists( 'pll_get_post' ) ) {
|
|
return $settings;
|
|
}
|
|
|
|
$pll_current_language = pll_current_language();
|
|
if ( empty( $pll_current_language ) ) {
|
|
return $settings;
|
|
}
|
|
|
|
foreach ( $settings as $key => $value ) {
|
|
if ( $value > 0 ) {
|
|
$id = pll_get_post( $value );
|
|
|
|
if ( ! empty( $id ) ) {
|
|
$settings[ $key ] = $id;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $settings;
|
|
}
|
|
|
|
}
|