É possível obter uma lista de tags de produtos WooCommerce, mas apenas se elas estiverem associadas a uma variedade de produtos específicos?
Eu tenho uma série de ids de produtos, mas não consigo descobrir por onde começar - eu olhei muitas das funções get_tag na documentação do Wordpress Codex, mas todas parecem ser para post / páginas / tipos de post personalizados individuais apenas e não para uso em uma matriz.
Com a ajuda do WisdmLabs, consegui juntar alguns códigos que obtêm as tags de produtos encontradas para todos os produtos dentro de uma determinada marca WooCommerce.
Eu também adicionei um pouco de funcionalidade, como remover valores de tag duplicados e adicionar um total ao lado de cada tag com o número de produtos que possuem essa tag para que a saída pareça ...
• Product Tag 1 (12)
• Product Tag 3 (4)
• Product Tag 4 (7)
• Product Tag 8 (11)
O código está abaixo para qualquer pessoa que queira usá-lo ou adaptá-lo. Estou gerando os resultados abaixo da descrição da marca usando o gancho da marca WooCommerce woocommerce_archive_description
.
function get_wc_product_brand_related_tags() {
global $post;
// Access the objects in the current WooCommerce query loop
$queried_object = get_queried_object();
// Get the term_id and term_name values
$term_id = $queried_object->term_id;
$term_name = $queried_object->slug;
// FOR TESTING ONLY - Echo the term_id and term_name values to see if they are what we're expecting
//echo '<p>The <em>term_id</em> is <strong>' . $term_id . '</strong> and the <em>term_name</em> is <strong>' . $term_name . '</strong>.</p>';
// Create our products array for use later
$products_array = array();
// Query the posts using the product custom post type and product_brand custom taxonomy terms
$brand_post_args = array(
'post_type' => 'product',
'posts_per_page' => -1,
'product_brand' => $term_name
);
// Run our WP_Query with the args above
$brand_post_query = new WP_Query($brand_post_args);
// If any products (posts using the product custom post type) are found…
if( $brand_post_query->have_posts() ) {
while ($brand_post_query->have_posts()) : $brand_post_query->the_post();
// FOR TESTING ONLY - shows a lot more information including product id, name and tags
$products_array[] = get_the_id() . ' - ' . get_the_title() . ' - ' . get_the_term_list($brand_post_query->ID, 'product_tag');
// Populate the array with the tags found for the product
$products_tags_array[] = get_the_term_list($brand_post_query->ID, 'product_tag');
endwhile;
}
// Count the duplicate values found inside our array
$count_tag_totals = array_count_values($products_tags_array);
// FOR TESTING ONLY - Used below to show the product information such as id, name etc
$show_product_values = array_unique($products_tags_array);
// Show the tags found for all of the products for the current brand, along with the number found for each tag
echo '<ul>';
foreach($count_tag_totals as $key=>$value) {
echo '<li>' . $key . ' ('. $value . ')</li>';
}
echo '</ul>';
// FOR TESTING ONLY - Displays unique tag name(s) along with a total of the products that have that tag
//echo '<pre><h3>Unique product tag(s) and associated totals for this brand… </h3>',print_r($count_tag_totals,1),'</pre>';
// FOR TESTING ONLY - Displays a list of all products (id and name) along with their tags
//echo '<pre><h3>The products details for this brand page are… </h3>',print_r($products_array,1),'</pre>';
// Reset the WP_Query for use elsewhere
wp_reset_query();
}
add_action('woocommerce_archive_description', 'get_wc_product_brand_related_tags', 15);
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras