Woocommerce - та же постоянная ссылка для магазина, категории, пользовательской базы с детскими кошками - PullRequest
0 голосов
/ 23 июня 2018

мой веб-сайт woocommerce имеет следующую структуру:

  1. / = домашняя страница (статическая страница)
  2. / products / = страница магазина
  3. / products / = категорияБаза
  4. / products /% product_cat% = Product Perma (настраиваемая база)

URL-адрес для продукта становится следующим: website.com / products / parent / child / product-permalink

В настоящее время страница магазина abd Product Постоянная ссылка работает вместе с Parent Cat, но ребенок возвращает 404.

Изначально я использовал этот код в своих функциях.php

add_filter( 'rewrite_rules_array', function( $rules )
{
    $new_rules = array(
        'products/([^/]*?)/page/([0-9]{1,})/?$' => 'index.php?product_cat=$matches[1]&paged=$matches[2]',
        'products/([^/]*?)/?$' => 'index.php?product_cat=$matches[1]',
    );
    return $new_rules + $rules;
} );

Легко.Сегодня я представил категории «Родитель» и «Ребенок». Snap!

Я нашел следующий пост на SO: Правило перезаписи Woocommerce для подкатегории продукта

Однако это не сработалоМоя конфигурация отличается, так как у меня также есть эта Страница Магазина с использованием местоположения / Products.

Кто-нибудь может увидеть быстрое исправление?

Большое спасибо.

1 Ответ

0 голосов
/ 27 июня 2018

Вот трюк, через - https://gist.github.com/levantoan/fc705c5ae4739e6d87e2ec51b257ea5c#file-set_product_category_base_same_shop_base-php

add_filter( 'rewrite_rules_array', function( $rules ) {
    $new_rules = array();
    $terms = get_terms( array(
        'taxonomy'   => 'product_cat',
        'post_type'  => 'product',
        'hide_empty' => false,
    ));
    if ( $terms && ! is_wp_error( $terms ) ) {
        $siteurl = esc_url( home_url( '/' ) );
        foreach ( $terms as $term ) {
            $term_slug = $term->slug;
            $baseterm = str_replace( $siteurl, '', get_term_link( $term->term_id, 'product_cat' ) );
            // rules for a specific category
            $new_rules[$baseterm .'?$'] = 'index.php?product_cat=' . $term_slug;
            // rules for a category pagination
            $new_rules[$baseterm . '/page/([0-9]{1,})/?$' ] = 'index.php?product_cat=' . $term_slug . '&paged=$matches[1]';
            $new_rules[$baseterm.'(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?product_cat=' . $term_slug . '&feed=$matches[1]';
        }
    }

    return $new_rules + $rules;
} );

/**
 * Flush rewrite rules when create new term
 * need for a new product category rewrite rules
 */
function imp_create_term() {
    flush_rewrite_rules(false);;
}
add_action( 'create_term', 'imp_create_term' );

Простой, а;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...