自定义帖子类型的 WooCommerce 产品

Posted

技术标签:

【中文标题】自定义帖子类型的 WooCommerce 产品【英文标题】:WooCommerce products in Custom Post Type 【发布时间】:2016-09-28 02:25:56 【问题描述】:

我正在尝试使用 Woocommerce 类别分类法在页面上显示相关产品。自定义帖子类型允许我将产品类别列表添加到自定义页面,但我不确定如何过滤它以仅显示我为相应页面选择的类别。目前它显示的是我所有的产品,而不是过滤我需要的产品:

$args = array( 'post_type' => 'product', 'posts_per_page' => -1, 'taxonomy' => 'product_cat' );

$loop = new WP_Query( $args );

while ( $loop->have_posts() ) : $loop->the_post();
    global $product; 
    echo '<div class="background-img"><a href="'.get_permalink().'">' . woocommerce_get_product_thumbnail().'<br /> '.get_the_title().'</a>';
    echo $product->get_price_html();
    echo '<form class="cart" method="post" enctype="multipart/form-data">
     <input type="hidden" name="add-to-cart" value="';
    echo esc_attr($product->id);
    echo '">
     <button type="submit">';
    echo $product->single_add_to_cart_text();
    echo '</button>
        </form>';
    echo '</div>';
endwhile; 

$attachment_ids = $product->get_gallery_attachment_ids();

foreach( $attachment_ids as $attachment_id )

    echo $image_link = wp_get_attachment_url( $attachment_id );


wp_reset_query(); 

这是开发网站的一个版本,它仍然很原始,需要很多样式,但应该给出一个想法:

http://betamarine.mainboard.com/engine/beta-14-z482/

我正在使用以下插件:

https://wordpress.org/plugins/custom-post-type-ui/

我可以创建自定义分类,但这是一个额外的步骤,并且会产生相同的结果。我想我可能遗漏了一些小东西,但我就是不明白。

【问题讨论】:

【参考方案1】:

所以经过一番努力,这里是代码 sn-p:

 <?php

   //retrieves the term variable from the admin page - replace "product_category" with the name of your post type
$part_terms = get_the_terms( $post->ID, 'product_category' );
if( $part_terms && !is_wp_error( $part_terms ) ) 
    foreach( $part_terms as $term ) 
    

//create a variable to filter your Wordpress Loop
    $part_args = array( 
		'post_type' => 'product', 
		'hierarchical' => true,
		'posts_per_page' => -1, 
		'tax_query' => array(array(
			'taxonomy' => 'product_category',
			'field' => 'slug',
			'terms' => array($term->slug),
			'operator' => 'IN'
			))
	);

							
    $loop = new WP_Query( $part_args );
//the loop
    while ( $loop->have_posts() ) : $loop->the_post(); 
    global $product; 
//some handy woocommerce coding
	echo '<div class="background-img"><a href="'.get_permalink().'">' . woocommerce_get_product_thumbnail().'<br /> '.get_the_title().'</a>';
	echo $product->get_price_html();
	echo '<form class="cart" method="post" enctype="multipart/form-data">
     <input type="hidden" name="add-to-cart" value="';
	echo esc_attr($product->id); 
	echo '">
     <button type="submit">';
	echo $product->single_add_to_cart_text(); 
	echo '</button>
		</form>';
	echo '</div>';
     	endwhile;

?>

感谢 JayDeep 让我走上正轨!

【讨论】:

【参考方案2】:

您需要使用 tax_query 来按 texonomy 使用过滤器。

检查此链接: https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

【讨论】:

感谢您的回复,通读了 codex 并想出了这个:$args = array( 'post_type' =&gt; 'product', 'posts_per_page' =&gt; -1, 'tax-query' =&gt; array(array( 'taxonomy' =&gt; 'product_cat', 'field' =&gt; 'slug', 'terms' =&gt; array($cat-&gt;slug), 'operator' =&gt; 'IN' )) ); 虽然它没有做任何事情,仍然只是展示所有产品,不是很擅长 PHP - 我在正确的轨道? 是的,你在正确的轨道上,你可以改变:'tax-query' => array(array('taxonomy' => 'product_cat', 'field' => 'slug', 'terms ' => array($cat->slug), 'operator' => 'IN' )) 数组根据您的要求。例如运算符支持“IN”、“=”、“LIKE”、“>”、“ 哦,我的话,刚刚意识到我使用的是 'tax-query' 而不是 'tax_query' - 带有下划线!也就是说,如果我在 array($category->slug) 的位置添加术语名称(例如'engine'),它会起作用,如果我添加变量调用没有显示。我怀疑它可能会调用页面上的其他内容?

以上是关于自定义帖子类型的 WooCommerce 产品的主要内容,如果未能解决你的问题,请参考以下文章

将自定义产品分类更改为 WooCommerce 产品分类

在 WordPress 管理列帖子/产品自定义帖子类型中显示 Slug

WooCommerce 自定义产品状态不可见/工作

在 wordpress 插件电子商务中使用自定义帖子类型

如何在自定义帖子类型上使用Woocommerce的二级图像上传Metabox?

WooCommerce 按标签或描述搜索产品查询帖子