我正在尝试创建一个显示产品及其相关信息的查询。
我坚持展示他们的可变产品选项(它们都是可变产品)。在此之后,我必须创建一个添加到购物车按钮,该按钮将添加到购物车,生成成功或错误消息,并让用户继续购物。一旦用户购物车中有东西,我想显示一个结帐按钮,将其带到结帐页面。
这是我到目前为止所做的事情
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 12,
// Indicate the product category - in this case "training"
'product_cat' => 'training'
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
// Show the product Featured Image and gallery images
woocommerce_show_product_images();
// Show the product Title
echo the_title();
// Show the product Custom Fields
echo get_post_meta($post->ID, 'Description', true);
echo get_post_meta($post->ID, 'Specifications', true);
echo get_post_meta($post->ID, 'Video', true);
// Show the Product Price
echo $product->get_price_html();
// Show the Variable Product options, for example: Color, Size etc
// stuck here!
// Show the Add to cart button
// stuck here!
// Show the Checkout button if there is an item in the users cart
// stuck here!
endwhile;
}
wp_reset_postdata();
?>
有谁知道我应该用来显示这些信息的功能? 我很难在文档/谷歌上找到任何相关内容。
谢谢大家!!!
答案 0 :(得分:0)
默认情况下,Woocommerce附带变量产品选项。对此你首先要创建属性。如果所有产品都具有相同的属性,则可以创建全局,也可以单独为每个产品创建属性。
以下是我正在为工作的网站的屏幕截图。我们有4个不同的包。所以我的属性是&#34; packages&#34;,我们有4个包。
保存属性后,转到下一个名为&#39; variants&#39; 的标签。选择包属性,它将自动加载所有变体。这是另一个截图。您必须选择默认变体。
完成上述所有更改后,您可以点击任何变体并更改产品参数,如价格,图片等。
变化可以用在像衬衫这样的产品上,你可以在那里买到不同颜色的衬衫,虽然衬衫的价格相同,但是你可以让用户选择颜色,看看衬衫在那种颜色下的样子。
虽然woocommerce默认设置了所有内容但是如果你要更改默认的wordpress模板,那么最好的方法是从woocommerce复制模板文件夹,并将此文件夹放在你的活动主题下的woocommerce名下,这样它就像wp-content / themes / theme-name / woocommerce。在这些内部,您需要woocommerce的templates文件夹中的所有文件和文件夹。 Woocommerce会自动选择所有这些文件并提供服务。 woocommerce建议使用此方法,因为直接更改插件会在下一次插件更新时丢失所有自定义设置。
编辑适合您的情况:抱歉,我认为我被带走了:p。无论如何,它取决于您所处的位置以及您用于获取这些值的文件,但是,下面的代码将输出所有产品变体以及该变体中的所有属性。我还没有对其进行测试,可能需要进行微调。 **
global $product, $post;
$variations = $product->get_available_variations();
foreach ($variations as $key => $value) {
echo 'variation ID'.$value['variation_id'];
foreach ($value['attributes'] as $attr_key => $attr_value) {
echo $attr_key.': '.$attr_value;
}
}
答案 1 :(得分:0)
低,看到..解决方案非常简单。 我必须拥有的所有内容都是:
wc_get_template_part( 'content', 'single-product' );
现在我的循环看起来像这样
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 12,
// Indicate the product category - in this case "Training"
'product_cat' => 'training'
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
wc_get_template_part( 'content', 'single-product' );
endwhile;
}
wp_reset_postdata();
?>
工作正常,并设置产品信息的样式我只是创建了子版本:
- content-single-product.php
- product-images.php
- variable.php
- meta.php
- product-thumbnails.php
并编辑了直到&#39;我的心很满意。
答案 2 :(得分:0)
我使用了Omer Farooq的一些代码。谢谢Omer!这将为您提供所选属性的完整下拉菜单。在这种情况下,我正在使用pa_color。我还删除了重复项,以便仅返回颜色集。这应该在产品循环中使用。就我而言,我正在使用WP_Query查询产品。
<?php
/* Check if this is a variable product */
if ($product->is_type( 'variable' )) { ?>
<select name="pa_color"><?php
global $product, $post;
$variations = $product->get_available_variations();
$allcolors = array();
foreach ($variations as $key => $value) {
foreach ($value['attributes'] as $attr_key => $attr_value) {
/* Get Name (Label) from Attribute Slug */
$taxonomy = 'pa_color'; /* Change to whatever you want */
$meta = get_post_meta($value['variation_id'], 'attribute_'.$taxonomy, true);
$term = get_term_by('slug', $meta, $taxonomy);
/* Only Return pa_color attributes - Change to whatever you want */
if ($attr_key == 'attribute_pa_color') {
$color = $attr_value;
/* Checking for duplicates and removing them */
if( ! in_array( $color, $allcolors ) ) {
echo '<option value="' . $attr_value . '">' . $term->name . '</option>';
$allcolors[] = $attr_value; /* Array value to use to check for duplicates */
}
}
}
}
?>
</select>
<?php } ?>