2017-06-03 1 views
0

Ich habe ein Problem mit doppelten Inhalten, was bei Woocommerce ein Problem zu sein scheint. Zum Beispiel wegen der doppelten Inhalt beschwert sich unsere SEO-Unternehmen, weil Sie gehen können:WebCommerce doppelte Taxonomie Seitenlinks entfernen?

http://localhost/wp7/product-category/clothing/hoodies/ 

aber Sie können auch zu

http://localhost/wp7/product-category/hoodies/ 

gehen So clothing ist die Mutter Taxonomie von hoodies. Gibt es einen Filter/Code, um es so zu machen, dass Sie nicht nur zum Link der untergeordneten Taxonomie navigieren können, sondern nur http://www.example.com/product-category/parent/child?

Jede Hilfe zu diesem würde sehr geschätzt werden.

Mit freundlichen Grüßen und vielen Dank!

Antwort

0

konnte ich durch diese Arbeit, mit dieser Lösung. Das scheint wunderbar zu funktionieren. Ich bin mir nicht sicher über die Auswirkungen im Woocommerce-Ökosystem, aber es funktioniert definitiv am Frontend.

/** 
* Disallow duplicate Woocommerce taxonomy links 
* |- Redirects http://www.example.com/product_cat/child to http://www.example.com/product_cat/parent/child 
*/ 
add_action('template_redirect', function ($query) { 
    global $wp; 
    $productCatTaxonomy = 'product_cat'; 

    if (is_tax($productCatTaxonomy)) { 
     $current_url = add_query_arg($wp->query_string, '', home_url($wp->request)); 
     $current_args = parse_url($current_url); 
     $currentTerm = get_term_by('slug', get_query_var('term'), $productCatTaxonomy); 

     if (isset($current_args['query']) && !stristr($current_args['query'], '%2f')) { 
      $currentParentTerm = (isset($currentTerm->parent) && $currentTerm->term_id) ? get_term_by('id', $currentTerm->parent, $productCatTaxonomy) : 0; 

      if ($currentParentTerm) { 
       $childTermLink = (isset($currentTerm->term_id) && $currentTerm->term_id) ? get_term_link($currentTerm->term_id, $productCatTaxonomy) : 0; 

       if ($childTermLink) { 
        wp_redirect($childTermLink); 
        die(); 
       } 
      } 
     } 
    } 

    return $query; 
});