Php 如何优化此代码以显示自定义字段?

Php 如何优化此代码以显示自定义字段?,php,wordpress,woocommerce,metadata,custom-fields,Php,Wordpress,Woocommerce,Metadata,Custom Fields,我正在显示Woocommerce产品的几个自定义字段: function fields() { global $product; $value1 = get_post_meta( $product->id, 'storage', true ); $value2 = get_post_meta( $product->id, 'delivery_date', true ); $value3 = get_post_meta( $product->id, 'mpn', true )

我正在显示Woocommerce产品的几个自定义字段:

function fields() {

global $product;

$value1 = get_post_meta( $product->id, 'storage', true );
$value2 = get_post_meta( $product->id, 'delivery_date', true );
$value3 = get_post_meta( $product->id, 'mpn', true );
$value4 = get_post_meta( $product->id, 'color', true );
$value5 = get_post_meta( $product->id, 'sizes_available', true );
$value6 = get_post_meta( $product->id, 'country_of_origin', true );

if ( ! empty( $value1 ) ) {
echo '<div>Storage: '  . $value1 . '</div>';
}

if ( ! empty( $value2 ) ) {
echo '<div>Delivery: '  . $value2 . '</div>';
}

if ( ! empty( $value3 ) ) {
echo '<div>Manufacturer's product number: '  . $value3 . '</div>';
}

if ( ! empty( $value4 ) ) {
echo '<div>Color: '  . $value4 . '</div>';
}

if ( ! empty( $value5 ) ) {
echo '<div>Sizes: '  . $value5 . '</div>';
}

if ( ! empty( $value6 ) ) {
echo '<div>Country: '  . $value6 . '</div>';
}

}

add_action( 'woocommerce_after_shop_loop_item', 'fields', 10 );
函数字段(){
全球$产品;
$value1=get\u post\u meta($product->id,'storage',true);
$value2=get\u post\u meta($product->id,'delivery\u date',true);
$value3=get\u post\u meta($product->id,'mpn',true);
$value4=get\u post\u meta($product->id,'color',true);
$value5=get\u post\u meta($product->id,'size\u available',true);
$value6=get\u post\u meta($product->id,“原产国”,true);
如果(!空($value1)){
回显“存储:”.$value1“;
}
如果(!空($value2)){
回音“交付:”.$value2.”;
}
如果(!空($value3)){
echo“制造商产品编号:”.$value3“;
}
如果(!空($value4)){
回显“颜色:”.$value4';
}
如果(!空($value5)){
回声“大小:”.$value5.”;
}
如果(!空($value6)){
回声“国家:”.$value6“;
}
}
添加操作('woocommerce'在'wou shop'循环'u项目之后,'fields',10);
如何优化/缩短此代码?将来可能会添加更多自定义字段,因此必须有一种方法来清理此代码

编辑以澄清。

我建议通过以下方式解决问题:
  • 创建一个字段数组
  • 创建一个循环
  • 使用特殊变量
    $label
    $value
    减少代码行长度
  • 使用
    printf
    控制和格式化要显示的值
  • 使用
    esc_html
    进行转义,以避免字段值与
    html
    代码冲突
代码片段:
global$产品;
$fields=[
[“标签”=>“存储”,“名称”=>“存储”],
[“标签”=>“交货”,“名称”=>“交货日期”],
[“标签”=>“制造商产品编号”,“名称”=>“mpn”],
[“标签”=>“颜色”,“名称”=>“颜色”],
[“标签”=>“尺寸”,“名称”=>“尺寸可用”],
[“标签”=>“国家”,“名称”=>“原产国”],
];
foreach($fields作为$field){
$label=$field['label'];
$value=get_post_meta($product->get_id(),$field['name',true);
printf('%s:%s',esc_html($label),esc_html($value));
}
我建议通过以下方式解决此问题:
  • 创建一个字段数组
  • 创建一个循环
  • 使用特殊变量
    $label
    $value
    减少代码行长度
  • 使用
    printf
    控制和格式化要显示的值
  • 使用
    esc_html
    进行转义,以避免字段值与
    html
    代码冲突
代码片段:
global$产品;
$fields=[
[“标签”=>“存储”,“名称”=>“存储”],
[“标签”=>“交货”,“名称”=>“交货日期”],
[“标签”=>“制造商产品编号”,“名称”=>“mpn”],
[“标签”=>“颜色”,“名称”=>“颜色”],
[“标签”=>“尺寸”,“名称”=>“尺寸可用”],
[“标签”=>“国家”,“名称”=>“原产国”],
];
foreach($fields作为$field){
$label=$field['label'];
$value=get_post_meta($product->get_id(),$field['name',true);
printf('%s:%s',esc_html($label),esc_html($value));
}

这个问题属于我。你可以更好地使用循环。请不要发布问题,然后在有人回答时更改内容。这浪费了你和其他人的时间,因为当你改变你的要求时,他们必须不断更新答案。这个问题属于你。你可以更好地使用循环。请不要发布问题,然后在有人回答时更改内容。这浪费了你和其他人的时间,因为他们必须在你改变需求时不断更新答案。
global $product;

$fields = [
    [ 'label' => 'Storage', 'name' => 'storage' ],
    [ 'label' => 'Delivery', 'name' => 'delivery_date' ],
    [ 'label' => "Manufacturer's product number", 'name' => 'mpn' ],
    [ 'label' => 'Color', 'name' => 'color' ],
    [ 'label' => 'Sizes', 'name' => 'sizes_available' ],
    [ 'label' => 'Country', 'name' => 'country_of_origin' ],
];

foreach ( $fields as $field ) {
    $label = $field['label'];
    $value = get_post_meta( $product->get_id(), $field['name'], true );

    printf( '<div>%s: %s</div>', esc_html( $label ), esc_html( $value ) );
}