[Помогите] Woocommerce - убрать из URL /product/ и /product-category/ при мультиязычности

Тема в разделе "Wordpress", создана пользователем cepera_007, 7 июл 2020.

XEvil 4.0 Релиз Состоялся!
Информация :
Все пользователи Nulled-а обязаны ознакомиться с основными правилами форума!
Правила: Правила форума
Правила раздела: ОБЩИЕ СВЕДЕНИЯ | Правила раздела | Правила оформления [​IMG]
Полезное: Раскодирование шаблонов | Шорткоды | Поиск плагинов | [​IMG] Складчины
Плюшки: functions.PHP - часть 1 | часть 2
Разделы WP: Шаблоны | CodeCanyon
  1. cepera_007

    cepera_007

    Регистр.:
    28 янв 2007
    Сообщения:
    229
    Симпатии:
    243
    В инете нашел "плюшку", которая убирает в Woocommerce из URL /product/ и /product-category/
    PHP:
    /*
    * Удалить из url Woocommerce  /product/,  /product-category/ и /shop/
    */
    /**
       * Для термина  - product_cat
    */
    add_filter'request''change_requerst_vars_for_product_cat' );
    add_filter'term_link''term_link_filter'10);
    /**
       * Для типа постов - product
    */
    add_filter'post_type_link''wpp_remove_slug'10);
    add_action'pre_get_posts''wpp_change_request' );

    function 
    change_requerst_vars_for_product_cat($vars) {

        global 
    $wpdb;
        if ( ! empty( 
    $vars'pagename' ] ) || ! empty( $vars'category_name' ] ) || ! empty( $vars'name' ] ) || ! empty( $vars'attachment' ] ) ) {
          
    $slug   = ! empty( $vars'pagename' ] ) ? $vars'pagename' ] : ( ! empty( $vars'name' ] ) ? $vars'name' ] : ( ! empty( $vars'category_name' ] ) ? $vars'category_name' ] : $vars'attachment' ] ) );
          
    $exists $wpdb->get_var$wpdb->prepare"SELECT t.term_id FROM $wpdb->terms t LEFT JOIN $wpdb->term_taxonomy tt ON tt.term_id = t.term_id WHERE tt.taxonomy = 'product_cat' AND t.slug = %s", array( $slug ) ) );
          if ( 
    $exists ) {
            
    $old_vars $vars;
            
    $vars     = array( 'product_cat' => $slug );
            if ( ! empty( 
    $old_vars'paged' ] ) || ! empty( $old_vars'page' ] ) ) {
              
    $vars'paged' ] = ! empty( $old_vars'paged' ] ) ? $old_vars'paged' ] : $old_vars'page' ];
            }
            if ( ! empty( 
    $old_vars'orderby' ] ) ) {
              
    $vars'orderby' ] = $old_vars'orderby' ];
            }
            if ( ! empty( 
    $old_vars'order' ] ) ) {
              
    $vars'order' ] = $old_vars'order' ];
            }
          }
        }

        return 
    $vars;

      }

    function 
    term_link_filter$url$term$taxonomy ) {

        
    $url str_replace"/product-category/""/"$url );
        return 
    $url;

      }

    function 
    wpp_remove_slug$post_link$post$name ) {

        if ( 
    'product' != $post->post_type || 'publish' != $post->post_status ) {
          return 
    $post_link;
        }
        
    $post_link str_replace'/' $post->post_type '/''/'$post_link );

        return 
    $post_link;

      }

    function 
    wpp_change_request$query ) {

        if ( ! 
    $query->is_main_query() || != count$query->query ) || ! isset( $query->query'page' ] ) ) {
          return;
        }
        if ( ! empty( 
    $query->query'name' ] ) ) {
          
    $query->set'post_type', array( 'post''product''page' ) );
        }

    }
    Всё работает исправно. Но , у меня установлен Polylang для мультиязычности.
    Данный код работает только для языка по-умолчанию, для дополнительных языков не работает и отдает страницу ошибки.
    Если же, я открываю в браузере страницу товара на любом дополнительном языке с /product/.... - всё работает.
    Помогите исправить код для мультиязычной версии?
     
  2. cepera_007

    cepera_007

    Регистр.:
    28 янв 2007
    Сообщения:
    229
    Симпатии:
    243
    Помогите кто знает. Вопрос ещё актуален
     
  3. RealKludge

    RealKludge Где карта, Билли?

    Регистр.:
    21 дек 2016
    Сообщения:
    156
    Симпатии:
    40
    ХЗ, поможет или нет, но попробуй плагины, что убирают /product/ и /product-category/.
     
    cepera_007 нравится это.