gpt4 book ai didi

php - 在 Woocommerce 中编写条件自定义产品选项卡有更好的方法吗?

转载 作者:搜寻专家 更新时间:2023-10-31 22:03:46 26 4
gpt4 key购买 nike

我使用 code sample from Woocommerce's site 为 Woocommerce 中的单个产品页面添加了自定义产品选项卡。 .

我希望自定义选项卡仅在有内容时有条件地显示。为此,我使用了以下代码:

// Set a global variable for the custom tab content to pass it to the callback function that displays the tab content.
$features_tab_content = '';
function woo_new_product_tab($tabs) {
global $post, $features_tab_content;
$custom_fields = array(
'field_one'=>'Field One',
'field_two'=>'Field Two'
);
$fields_to_display = array();
foreach ($custom_fields as $fieldname=>$fieldtitle) {
$$val = get_post_meta( $post->ID, $fieldname, true );
if ($$val != '') {
$fields_to_display[$fieldtitle] = $$val;
}
}
if (count($fields_to_display) > 0) {
$features_tab_content = '<h2>Product Features</h2><table class="shop_attributes"><tbody>';
foreach ($fields_to_display as $fieldtitle=>$val) {
$features_tab_content .= '<tr><th>' . $fieldtitle . '</th><td>' . $val . '</td></tr>';
}
$features_tab_content .= '</tbody></table>';
$tabs['features'] = array(
'title' => __( 'Features', 'woocommerce' ),
'priority' => 20,
'callback' => 'woo_new_product_tab_content'
);
}
return $tabs;
}
function woo_new_product_tab_content() {
global $features_tab_content;
echo $features_tab_content;
}
add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );

代码在 woo_new_product_tab 函数中测试自定义选项卡的内容是否存在,并使用名为 $features_tab_content 的变量来保存实际内容。

问题是我不知道如何将内容传递给实际显示内容的回调函数,所以我在函数中将 $features_tab_content 变量设为全局变量并在回调函数 woo_new_product_tab_content

这看起来有点笨拙,但它比测试两个功能中的内容要好。我不想使用插件来执行此操作,但我想知道是否有更简洁的编码方式。

最佳答案

您可以在过滤 $tabs 时检查您计划显示的元数据是否存在:

add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );
function woo_new_product_tab( $tabs ) {
global $post;

if( get_post_meta( $post->ID, 'field_one', true ) || get_post_meta( $post->ID, 'field_two', true ) ){
// Adds the new tab

$tabs['features'] = array(
'title' => __( 'Features', 'stackoverflow' ),
'priority' => 20,
'callback' => 'woo_new_product_tab_content'
);
}
return $tabs;

}

没有全局变量的回调:

function woo_new_product_tab_content() {
global $post;

$custom_fields = array(
'field_one'=>'Field One',
'field_two'=>'Field Two'
);

$fields_to_display = array();

foreach ($custom_fields as $fieldname=>$fieldtitle) {
$$val = get_post_meta( $post->ID, $fieldname, true );
if ($$val != '') {
$fields_to_display[$fieldtitle] = $$val;
}
}

// The new tab content
if (count($fields_to_display) > 0) {
echo '<h2>Product Features</h2><table class="shop_attributes"><tbody>';

foreach ( $fields_to_display as $fieldtitle => $val ) {
echo '<tr><th>' . $fieldtitle . '</th><td>' . $val . '</td></tr>';
}

echo '</tbody></table>';

}

}

关于php - 在 Woocommerce 中编写条件自定义产品选项卡有更好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22846010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com