Файловый менеджер - Редактировать - /home/bean7936/excel-pro.banque-du-temps.fr/wp-content/plugins/woo-permalink-manager/src/Frontend/Frontend.php
Назад
<?php namespace Premmerce\UrlManager\Frontend; use Premmerce\UrlManager\Admin\Settings ; use WP_Post ; use WP_Term ; /** * Class Frontend * * @package Premmerce\UrlManager */ class Frontend { const WOO_PRODUCT = 'product' ; const WOO_CATEGORY = 'product_cat' ; /** * Options * * @var array */ protected $options = array() ; /** * Frontend constructor. */ public function __construct() { $options = get_option( Settings::OPTIONS ); $this->options = $options; if ( !empty($options['product']) || !empty($options['sku']) ) { add_action( 'request', array( $this, 'replaceRequest' ), 11 ); } if ( !empty($options['canonical']) ) { add_action( 'wp_head', array( $this, 'addCanonical' ) ); } $isGetParamUrlFormat = apply_filters( 'wpml_setting', 0, 'language_negotiation_type' ) == '3'; if ( class_exists( 'SitePress' ) && $isGetParamUrlFormat ) { add_filter( 'icl_ls_languages', array( $this, 'modifyWpmlLanguageSwitcher' ), 20 ); } } /** * Modify wpml Language Switcher * * @param array $languages * * @return array */ public function modifyWpmlLanguageSwitcher( $languages ) { global $sitepress ; foreach ( $languages as $key => $val ) { $switcherLink = $val['url']; $parsedLink = parse_url( $switcherLink ); if ( isset( $parsedLink['query'] ) ) { $switcherLink = str_replace( '?' . $parsedLink['query'], '', $switcherLink ); } if ( $key != $sitepress->get_default_language() ) { $languages[$key]['url'] = $switcherLink . '?lang=' . $key; } else { $languages[$key]['url'] = $switcherLink; } } return $languages; } /** * Replace request if product found * * @param array $request * * @return array */ public function replaceRequest( $request ) { global $wp, $wpdb ; if ( $this->checkIfWooCategoryExists( $request ) ) { return $request; } $url = $wp->request; if ( !empty($url) ) { $url = explode( '/', $url ); $slug = array_pop( $url ); $replace = array(); if ( 'feed' === $slug ) { $replace['feed'] = $slug; $slug = array_pop( $url ); } if ( 'amp' === $slug ) { $replace['amp'] = $slug; $slug = array_pop( $url ); } $commentsPosition = strpos( $slug, 'comment-page-' ); if ( 0 === $commentsPosition ) { $replace['cpage'] = substr( $slug, strlen( 'comment-page-' ) ); $slug = array_pop( $url ); } $num = intval( $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(ID) as count_id FROM {$wpdb->posts} WHERE post_name = %s AND post_type = %s", array( $slug, self::WOO_PRODUCT ) ) ) ); if ( $num > 0 ) { $replace['page'] = ''; $replace['post_type'] = self::WOO_PRODUCT; $replace['product'] = $slug; $replace['name'] = $slug; return $replace; } } return $request; } protected function removeSuffix( $url, $suffix ) { $length = mb_strlen( $suffix ); if ( 0 === (int) $length ) { return true; } // Ends with if ( substr( $url, -$length ) === $suffix ) { $url = str_replace( $suffix, '', $url ); } return $url; } public function addCanonical() { //avoid canonicals duplication if ( !defined( 'WPSEO_VERSION' ) && !get_queried_object() instanceof WP_Post ) { $canonical = apply_filters( 'premmerce_permalink_manager_canonical', $this->getCanonical() ); if ( !empty($canonical) ) { echo '<link rel="canonical" href="' . esc_url( $canonical ) . '" />' . "\n" ; } } } private function getCanonical( $useCommentsPagination = false ) { global $wp_rewrite ; $qo = get_queried_object(); $canonical = null; if ( $qo instanceof WP_Term ) { $canonical = get_term_link( $qo ); $paged = get_query_var( 'paged' ); if ( $paged > 1 ) { $canonical = trailingslashit( $canonical ) . trailingslashit( $wp_rewrite->pagination_base ) . $paged; } } elseif ( $qo instanceof WP_Post ) { $canonical = get_permalink( $qo ); if ( $useCommentsPagination ) { $page = get_query_var( 'cpage' ); if ( $page > 1 ) { $canonical = trailingslashit( $canonical ) . $wp_rewrite->comments_pagination_base . '-' . $page; } } } if ( $canonical ) { return user_trailingslashit( $canonical ); } } /** * Find current slug by product SKU * * @param string $sku * * @return string */ protected function findSlugBySku( $sku ) { global $wpdb ; $skuId = $wpdb->get_row( $wpdb->prepare( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_value = %s AND meta_key = '_sku'", array( $sku ) ), ARRAY_A ); if ( isset( $skuId['post_id'] ) ) { $postSlug = get_post_field( 'post_name', $skuId['post_id'] ); if ( '' !== $postSlug ) { return $postSlug; } } return $sku; } /** * Check if woocommerce category exists in request * * @param array $request * * @return boolean */ protected function checkIfWooCategoryExists( $request ) { if ( !empty($this->options['category']) && in_array( $this->options['product'], array( 'category_slug', 'hierarchical' ) ) ) { if ( array_key_exists( self::WOO_CATEGORY, $request ) ) { return true; } } return false; } }
| ver. 1.6 |
Github
|
.
| PHP 8.3.30 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка