我正在开发一个 Woocommerce 网站,该网站要求其某些产品在简短描述下和购物车之前包含额外的信息“产品功能”。
我在 Woocommerce 产品数据面板中创建了一个名为“功能”的选项卡,其中包含 5 个“关键功能”自定义字段。这是代码:
add_filter( 'woocommerce_product_data_tabs', 'ssafe_product_settings_tabs' );
function ssafe_product_settings_tabs( $tabs ){
$tabs[ 'ssafe' ] = array(
'label' => 'Features',
'target' => 'features_product_data',
'priority' => 81,
);
return $tabs;
}
add_action( 'woocommerce_product_data_panels', 'ssafe_product_panels' );
function ssafe_product_panels(){
echo '<div id="features_product_data" class="panel woocommerce_options_panel hidden">';
woocommerce_wp_text_input(
array(
'id' => 'feat_1',
'value' => get_post_meta( get_the_ID(), 'feat_1', true ),
'label' => 'Feature 1',
'description' => 'Describe a key product feature'
)
);
woocommerce_wp_text_input(
array(
'id' => 'feat_2',
'value' => get_post_meta( get_the_ID(), 'feat_2', true ),
'label' => 'Feature 2',
'description' => 'Describe a key product feature'
)
);
woocommerce_wp_text_input(
array(
'id' => 'feat_3',
'value' => get_post_meta( get_the_ID(), 'feat_3', true ),
'label' => 'Feature 3',
'description' => 'Describe a key product feature'
)
);
woocommerce_wp_text_input(
array(
'id' => 'feat_4',
'value' => get_post_meta( get_the_ID(), 'feat_4', true ),
'label' => 'Feature 4',
'description' => 'Describe a key product feature'
)
);
woocommerce_wp_text_input(
array(
'id' => 'feat_5',
'value' => get_post_meta( get_the_ID(), 'feat_5', true ),
'label' => 'Feature 5',
'description' => 'Describe a key product feature'
)
);
echo '</div>';
}
add_action( 'woocommerce_process_product_meta', 'ssafe_save_fields' );
function ssafe_save_fields( $id ){
update_post_meta( $id, 'feat_1', sanitize_text_field( $_POST[ 'feat_1' ] ) );
update_post_meta( $id, 'feat_2', sanitize_text_field( $_POST[ 'feat_2' ] ) );
update_post_meta( $id, 'feat_3', sanitize_text_field( $_POST[ 'feat_3' ] ) );
update_post_meta( $id, 'feat_4', sanitize_text_field( $_POST[ 'feat_4' ] ) );
update_post_meta( $id, 'feat_5', sanitize_text_field( $_POST[ 'feat_5' ] ) );
}
我还在functions.php中添加了代码,以在网站的前端显示这些字段。这是代码:
add_action( 'woocommerce_before_add_to_cart_form', 'features', 11 );
function features() {
global $product;
$features1 = $product->get_meta( 'feat_1' );
$features2 = $product->get_meta( 'feat_2' );
$features3 = $product->get_meta( 'feat_3' );
$features4 = $product->get_meta( 'feat_4' );
$features5 = $product->get_meta( 'feat_5' );
if ( ! empty($features1) ) {
echo ("<h6>Key Features</h6>");
}
if ( ! empty($features1) ) {
echo '<p>' . sprintf( __( ' • %s', 'woocommerce' ), $features1 ) . '</p>';
}
if ( ! empty($features2) ) {
echo '<p>' . sprintf( __( ' • %s', 'woocommerce' ), $features2 ) . '</p>';
}
if ( ! empty($features3) ) {
echo '<p>' . sprintf( __( ' • %s', 'woocommerce' ), $features3 ) . '</p>';
}
if ( ! empty($features4) ) {
echo '<p>' . sprintf( __( ' • %s', 'woocommerce' ), $features4 ) . '</p>';
}
if ( ! empty($features5) ) {
echo '<p>' . sprintf( __( ' • %s', 'woocommerce' ), $features5 ) . '</p>';
}
}
第二个代码块是我苦苦挣扎的地方。它需要有条件,以便仅在自定义字段包含某些数据时才显示关键功能。然而,我担心我使用了很多
echo
语句来实现一些可能需要更多技巧才能完成的事情。
有人对提高我的代码效率有什么建议吗?
在 PHP 中创建条件项目符号点涉及使用条件语句来确定要显示哪些项目符号点。这是带有示例的分步指南:
初始化您的条件:设置显示要点的条件。
使用条件语句:使用 if、else if 和 else 语句检查条件并生成适当的 HTML 输出。
输出要点:回显符合条件的要点的 HTML。