File manager - Edit - /home/antilam/web/antilam.ru/public_html/wp-content/plugins/cyr2lat/src/php/BackgroundProcesses/TermConversionProcess.php
Back
<?php /** * Background old term slugs converting process * * @package cyr-to-lat */ namespace CyrToLat\BackgroundProcesses; use CyrToLat\Main; use stdClass; /** * Class TermConversionProcess */ class TermConversionProcess extends ConversionProcess { /** * Site locale. * * @var string */ private $locale; /** * Current term to convert. * * @var stdClass */ private $term; /** * Process action name * * @var string */ protected $action; /** * TermConversionProcess constructor. * * @param Main $main Plugin main class. */ public function __construct( Main $main ) { $this->action = constant( 'CYR_TO_LAT_TERM_CONVERSION_ACTION' ); $this->locale = get_locale(); parent::__construct( $main ); } /** * Task. Updates single term * * @param stdClass $term Queue item to iterate over. * * @return boolean * @noinspection PhpParameterNameChangedDuringInheritanceInspection * @noinspection PhpMissingReturnTypeInspection * @noinspection ReturnTypeCanBeDeclaredInspection */ protected function task( $term ) { global $wpdb; $this->term = $term; $slug = urldecode( $term->slug ); add_filter( 'locale', [ $this, 'filter_term_locale' ] ); $transliterated_slug = $this->main->transliterate( $slug ); remove_filter( 'locale', [ $this, 'filter_term_locale' ] ); if ( $transliterated_slug !== $slug ) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery $wpdb->update( $wpdb->terms, [ 'slug' => rawurlencode( $transliterated_slug ) ], [ 'term_id' => $term->term_id ] ); $this->log( __( 'Term slug converted:', 'cyr2lat' ) . ' ' . $slug . ' => ' . $transliterated_slug ); } return false; } /** * Complete * * @noinspection ReturnTypeCanBeDeclaredInspection */ protected function complete() { parent::complete(); wp_cache_flush(); $this->log( __( 'Term slugs conversion completed.', 'cyr2lat' ) ); } /** * Filter term locale * * @return string|mixed * @noinspection PhpUndefinedFunctionInspection */ public function filter_term_locale() { // Polylang filter. if ( class_exists( 'Polylang' ) ) { $pll_pll_get_term_language = pll_get_term_language( $this->term->term_taxonomy_id ); if ( false !== $pll_pll_get_term_language ) { return $pll_pll_get_term_language; } return $this->locale; } // WPML filter. $args = [ 'element_type' => $this->term->taxonomy, 'element_id' => $this->term->term_taxonomy_id, ]; $wpml_element_language_details = apply_filters( 'wpml_element_language_details', false, $args ); if ( ! isset( $wpml_element_language_details->language_code ) ) { return $this->locale; } $language_code = $wpml_element_language_details->language_code; $wpml_active_languages = apply_filters( 'wpml_active_languages', false, [] ); return $wpml_active_languages[ $language_code ]['default_locale'] ?? $this->locale; } }
| ver. 1.4 |
Github
|
.
| PHP 8.4.22 | Generation time: 0.11 |
proxy
|
phpinfo
|
Settings