File Manager
<?php
namespace WCML\Rest;
use WPML\FP\Fns;
class Generic {
/**
* Prevent WPML redirection when using the default language as a parameter in the url
*/
public static function preventDefaultLangUrlRedirect() {
$exp = explode( '?', $_SERVER['REQUEST_URI'] );
if ( ! empty( $exp[1] ) ) {
parse_str( $exp[1], $vars );
if ( isset( $vars['lang'] ) && $vars['lang'] === wpml_get_default_language() ) {
unset( $vars['lang'] );
$_SERVER['REQUEST_URI'] = $exp[0] . '?' . http_build_query( $vars );
}
}
}
/**
* @param \WP_Query $wp_query
*/
public static function autoAdjustIncludedIds( \WP_Query $wp_query ) {
$lang = $wp_query->get( 'lang' );
$include = $wp_query->get( 'post__in' );
if ( empty( $lang ) && ! empty( $include ) ) {
$filtered_include = [];
foreach ( $include as $id ) {
$filtered_include[] = wpml_object_id_filter( $id, get_post_type( $id ), true );
}
$wp_query->set( 'post__in', $filtered_include );
}
}
/**
* We need an unfiltered 'home_url' so that the REST signature matches.
*
* Note that WPML already does this, but fails to recognize a REST
* request when we get a 'relative' home_url.
*/
public static function removeHomeUrlFilterOnRestAuthentication() {
$returnTrue = Fns::always( true );
add_filter( 'determine_current_user', Fns::tap( function() use ( $returnTrue ) {
add_filter( 'wpml_skip_convert_url_string', $returnTrue );
} ), 10 );
add_filter( 'determine_current_user', Fns::tap( function() use ( $returnTrue ) {
remove_filter( 'wpml_skip_convert_url_string', $returnTrue );
} ), 20 );
}
}
File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com