首页 > 解决方案 > 确定产品属于什么类别并显示图像。- 如何清理这个 PHP 代码?

问题描述

对于我的 Woocommerce 商店,我在产品页面中插入了一些 PHP 代码来显示图像。下面的代码有效,但维护性很强且很长。我现在有 83 个用于 elseif 的……我知道这可以做得更好、更清洁、更快。

可能使用 foreach 左右。问题是,图像的名称还包含产品名称,它会有所不同。所以,基本上,1)我需要确定类别名称(已解决),2)产品名称和 3)调用一个名为“productname-categoriename.png”的图像

有人可以帮我重现这段代码,但更聪明吗?

    <?php 
if ( is_product() && has_term( 'category-name', 'product_cat' ) ) {
  echo '<div class="logo"><img src="https://www.website.com/logo/productname-categoryname.png"></div>';
  }
  elseif ( is_product() && has_term( 'category-name-2', 'product_cat' ) ) {
  echo '<div class="logo"><img src="https://www.website.com/logo/productname-categoryname-2.png"></div>'; 
  }
  elseif ( is_product() && has_term( 'category-name-83', 'product_cat' ) ) {
  echo '<div class="logo"><img src="https://www.website.com/logo/productname-category-name-83.png"></div>'; 
  
} else {
  echo "";
}
?>

标签: phpwordpressif-statementwoocommercecode-cleanup

解决方案


你会得到很多不同的答案,但这里有一种方法:

<?php    

if (is_product()) {
    $productName = $product->get_name();
    // however you get the category name
    $categoryName = '';     
    $iconName = "{$productName}-{$categoryName}.png";
    $output = '<div class="logo"><img src="https://www.website.com/logo/' . $iconName . '"></div>'
}

echo $output ?? '';

您将需要遵守已应用于 png 文件的命名约定。


推荐阅读