Woocommerce - 仅当有追加销售产品时才将 html 添加到单个产品页面

时间:2021-05-31 18:12:04

标签: php function woocommerce hook-woocommerce

我在woocommerce单品布局中为左侧的显示描述选项卡和右侧的追加销售产品编写了此代码。但是如果一个产品根本没有追加销售产品,如何避免这个 html 代码,并返回到原来的布局? 这是我的自定义代码:

/*** Display description tab and upsell products side by side */

add_action( 'woocommerce_after_single_product_summary', 'ckde_open_container_desc_upsells', 0 );
function ckde_open_container_desc_upsells() {
  echo '<div class=" grid kc-desc-upsells-content"><div class="col-60 kc-desc-container">';
}

add_action( 'woocommerce_after_single_product_summary', 'ckde_close_open_col_desc_upsells', 15 );
function ckde_close_open_col_desc_upsells(){
  echo '</div><div class="col-40 kc-upsells-container">';
}

add_action( 'woocommerce_after_single_product_summary', 'ckde_close_col_upsells', 20 );
function ckde_close_col_upsells(){
  echo '</div></div>';
}

/*** Change number of upsells output  */

remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15);
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_upsells', 15);

if (!function_exists('woocommerce_output_upsells')) {
    function woocommerce_output_upsells() {
      woocommerce_upsell_display(6,3); // Display max 6 products, 3 per row
    }
}

肯定有一个钩子或条件标签可以做到这一点,但我不知道它是什么。 我不想覆盖 woocommerce 模板文件,而是在我的自定义函数文件中执行此操作 我希望它足够清楚。 非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我终于是这样解决的!

/*** Display description tab and up-sell products side by side when up-sell products are defined */

add_action( 'woocommerce_after_single_product_summary', 'ckde_open_container_desc_upsells', 0 );

function ckde_open_container_desc_upsells() {
  global $product;

  if ( isset( $product ) && is_product() ) {
  
    $upsells = $product->get_upsell_ids();

    if ( count( $upsells ) > 0 ) {

      echo '<div class=" grid kc-desc-upsells-content"><div class="col-60 kc-desc-container">'; 
    }
  }
}

add_action( 'woocommerce_after_single_product_summary', 'ckde_close_open_col_desc_upsells', 15 );

function ckde_close_open_col_desc_upsells() {

  global $product;

  if ( isset( $product ) && is_product() ) {

    $upsells = $product->get_upsell_ids();

    if ( count( $upsells ) > 0 ) {

      echo '</div><div class="col-40 kc-upsells-container">';   
    }
  }
}

add_action( 'woocommerce_after_single_product_summary', 'ckde_close_col_upsells', 20 );

function ckde_close_col_upsells() {

  global $product;

  if ( isset( $product ) && is_product() ) {

    $upsells = $product->get_upsell_ids();

    if ( count( $upsells ) > 0 ) {

      echo '</div></div>';  
    }
  }
}