Commit realizado el 12:13:52 08-04-2024
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
/**
|
||||
* The Sitepress helpers.
|
||||
*
|
||||
* @since 1.0.40
|
||||
* @package RankMath
|
||||
* @subpackage RankMath\Helpers
|
||||
* @author Rank Math <support@rankmath.com>
|
||||
*/
|
||||
|
||||
namespace RankMath\Helpers;
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
/**
|
||||
* Sitepress class.
|
||||
*/
|
||||
class Sitepress {
|
||||
|
||||
/**
|
||||
* Has filter removed.
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $has_get_category = false;
|
||||
|
||||
/**
|
||||
* Has filter removed.
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $has_get_term = false;
|
||||
|
||||
/**
|
||||
* Has filter removed.
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $has_terms_clauses = false;
|
||||
|
||||
/**
|
||||
* Has filter removed.
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $has_get_terms_args = false;
|
||||
|
||||
/**
|
||||
* Has home_url filter removed.
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $has_home_url = false;
|
||||
|
||||
|
||||
/**
|
||||
* Main instance
|
||||
*
|
||||
* Ensure only one instance is loaded or can be loaded.
|
||||
*
|
||||
* @return Sitepress
|
||||
*/
|
||||
public static function get() {
|
||||
static $instance;
|
||||
|
||||
if ( is_null( $instance ) && ! ( $instance instanceof Sitepress ) ) {
|
||||
$instance = new Sitepress();
|
||||
}
|
||||
|
||||
return $instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove term filters.
|
||||
*/
|
||||
public function remove_term_filters() {
|
||||
if ( ! $this->is_active() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$sitepress = $this->get_var();
|
||||
|
||||
$this->has_get_category = remove_filter( 'category_link', [ $sitepress, 'category_link_adjust_id' ], 1 );
|
||||
$this->has_get_term = remove_filter( 'get_term', [ $sitepress, 'get_term_adjust_id' ], 1 );
|
||||
$this->has_terms_clauses = remove_filter( 'terms_clauses', [ $sitepress, 'terms_clauses' ] );
|
||||
$this->has_get_terms_args = remove_filter( 'get_terms_args', [ $sitepress, 'get_terms_args_filter' ] );
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore term filters.
|
||||
*/
|
||||
public function restore_term_filters() {
|
||||
if ( ! $this->is_active() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$sitepress = $this->get_var();
|
||||
|
||||
if ( $this->has_get_category ) {
|
||||
$this->has_get_category = false;
|
||||
add_filter( 'category_link', [ $sitepress, 'category_link_adjust_id' ], 1, 1 );
|
||||
}
|
||||
|
||||
if ( $this->has_get_term ) {
|
||||
$this->has_get_term = false;
|
||||
add_filter( 'get_term', [ $sitepress, 'get_term_adjust_id' ], 1, 1 );
|
||||
}
|
||||
|
||||
if ( $this->has_terms_clauses ) {
|
||||
$this->has_terms_clauses = false;
|
||||
add_filter( 'terms_clauses', [ $sitepress, 'terms_clauses' ], 10, 3 );
|
||||
}
|
||||
|
||||
if ( $this->has_get_terms_args ) {
|
||||
$this->has_get_terms_args = false;
|
||||
add_filter( 'get_terms_args', [ $sitepress, 'get_terms_args_filter' ], 10, 2 );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove home_url filter.
|
||||
*/
|
||||
public function remove_home_url_filter() {
|
||||
if ( ! $this->is_active() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
global $wpml_url_filters;
|
||||
$this->has_home_url = remove_filter( 'home_url', [ $wpml_url_filters, 'home_url_filter' ], -10 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore home_url filter.
|
||||
*/
|
||||
public function restore_home_url_filter() {
|
||||
if ( ! $this->is_active() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( $this->has_home_url ) {
|
||||
global $wpml_url_filters;
|
||||
$this->has_home_url = false;
|
||||
add_filter( 'home_url', [ $wpml_url_filters, 'home_url_filter' ], -10, 4 );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is plugin active.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function is_active() {
|
||||
return isset( $GLOBALS['sitepress'] );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sitepress global variable.
|
||||
*
|
||||
* @return object
|
||||
*/
|
||||
public function get_var() {
|
||||
return $GLOBALS['sitepress'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete cached tax permalink.
|
||||
*
|
||||
* @param int $term_id The term ID.
|
||||
* @param string $taxonomy The taxonomy name.
|
||||
* @return void
|
||||
*/
|
||||
public function delete_cached_tax_permalink( $term_id, $taxonomy ) {
|
||||
if ( ! $this->is_active() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
wp_cache_delete(
|
||||
md5( wp_json_encode( [ $term_id, $taxonomy, false ] ) ),
|
||||
'icl_tax_permalink_filter'
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user