我正在尝试定制子主题,以显示可变产品的sku。主要的问题是它在主主题中工作,但它是通过一个函数调用的,由于格式的原因,我需要删除它。
我的客户要求更紧凑和清晰的界面,所以我的解决方案是把所有的东西都放在price.php中,但是当我尝试调用产品的Sku时,它只显示主要的一个,而不显示变体。
更具体地说:
我的主主题config.php有这样的功能:
function mad_woocommerce_template_single_meta () {
?>
<?php global $product; ?>
<section class="product-section">
<div class="product_meta">
<?php do_action('woocommerce_product_meta_start'); ?>
<?php if ('yes' == get_option('woocommerce_manage_stock')): ?>
<?php
$availability = $product->get_availability();
$availability_html = empty( $availability['availability'] ) ? '' : '<span class="stock ' . esc_attr( $availability['class'] ) . '">' . esc_html( $availability['availability'] ) . '</span>';
?>
<span class="stock_wrapper">
<span class="meta-title"><?php _e('Availability:', 'flatastic'); ?></span>
<?php echo apply_filters( 'woocommerce_stock_html', $availability_html, $availability['availability'], $product ); ?>
</span>
<?php endif; ?>
<?php if (wc_product_sku_enabled() && ($product->get_sku() || $product->is_type('variable'))) : ?>
<span class="sku_wrapper">
<span class="meta-title"><?php _e('SKU:', 'flatastic'); ?></span>
<span class="sku" itemprop="sku"><?php echo ( $sku = $product->get_sku() ) ? $sku : __( 'N/A', 'flatastic' ); ?></span>
</span>
<?php endif; ?>
<?php do_action('woocommerce_product_meta_end'); ?>
</div><!--/ .product_meta-->
</section><!--/ .product-section-->
<?php
$post_content = !empty($product->post_excerpt) ? $product->post_excerpt : '';
$post_content = apply_filters('the_excerpt', $post_content);
$post_content = str_replace(']]>', ']]>', $post_content);
?>
<?php if (!empty($post_content)): ?>
<section class="product-section">
<?php echo $post_content; ?>
</section><!--/ .product-section-->
<?php endif; ?>
<?php
}已调用
public function woocommerce_add_hooks(){
add_action('woocommerce_single_product_summary', array(&$this, 'mad_woocommerce_template_single_meta'), 11); }我在子主题price.php中的代码如下所示:
<?php if ( wc_product_sku_enabled() && ( $product->get_sku() || $product->is_type( 'variable' ) ) ) : ?>
<span class="product-code"><?php _e('SKU:', 'flatastic'); ?> <span class="sku"><?php echo ( $sku = $product->get_sku() ) ? $sku : _e( 'N/A', 'flatastic' ); ?></span></span>
<?php endif; ?>此外,从价格中调用变量股票也会返回类似的数量问题。
解决这个问题的最好方法是什么?我尝试了不同的解决方案,但到目前为止都没有奏效。
发布于 2017-05-08 17:48:01
我不明白你的代码是怎么回事。
但对于你的问题,我所理解的是,你必须循环所有的孩子来获得变量的sku。如下所示:
$products = array_filter( array_map( 'wc_get_product', $product->get_children() ) );
foreach ( $products as $_product ) {
echo $_product->get_sku();
}https://stackoverflow.com/questions/43844357
复制相似问题