search icon

Display Type i WooCommerce

I WooCommerce kan man under varekategorier vælge, display type, om en kategoriside skal vise alle produkter, der er i en kategori, eller om siden skal vise alle underkategorier til kategorien man har valgt. Man kan også vælge, at man vil have vist både underkategorier og produkter i en kategori. Men, hvad nu, hvis man vil have vist underkategorier til en kategori vist på en kategoriside og produkter til samme kategori på en anden side?

En mulig løsning

Denne løsning kan virke hacket, men den virker. Her styrer man visningen af en kategoriside med en GET-variabel. I dette eksempel er display type som standard sat til at vise underkategorier. I den følgende kode sættes en GET-varibel sådan, at hvis man går til kategorisiden, så bliver underkategorier vist, men sætter man GET-variablen cat-products på, så bliver produkter i kategorien vist.

Adressen man så kan sætte ind i et tilpasset link til en menu kan se sådan ud:

https://eksempel.dk/product-category/rick-and-morty?cat-products=1

Koden herunder indsættes i functions.php

<?php
function pt_set_category_display( $value = null, $object_id, $meta_key, $single ){
    //  Get category of woocommerce
    $term = get_term( $object_id, 'product_cat' ); 
	
	if(isset($_GET['cat-products'])) {
		$display_type = 'products';
	} else {
		return;
	}
    
    return ( true === $single ) ? $display_type : array( $display_type );
}
// Attach function with wordpress filter
add_filter( 'get_term_metadata', 'pt_set_category_display', 10, 4 );

Produkter som standard

Vil ønsker man at lave det omvendte, så display type er sat til produkter som standard, men ændres til underkategorier når man bruger GET-variablen cat-subcats er koden som vist her:

<?php
function pt_set_category_display( $value = null, $object_id, $meta_key, $single ){
    //  Get category of woocommerce
    $term = get_term( $object_id, 'product_cat' ); 
	
	if(isset($_GET['cat-subcats'])) {
                // HER ER $display_type ÆNDRET
		$display_type = 'subcategories';
	} else {
		return;
	}
    
    return ( true === $single ) ? $display_type : array( $display_type );
}
// Attach function with wordpress filter
add_filter( 'get_term_metadata', 'pt_set_category_display', 10, 4 );

Skriv et svar

Verified by MonsterInsights