有条件地在Woocommerce中显示基于自定义字段值的包装类

时间:2018-02-03 03:32:26

标签: php wordpress select woocommerce custom-fields

在woocommerce中,我使用以下代码(取自this answer)在单个产品页面中显示自定义字段值:

// Enabling and Displaying Fields in backend
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );
function woo_add_custom_general_fields() {
    global $post;

    echo '<div class="options_group">';

    woocommerce_wp_select( array( // Select Field type
        'id'          => '_Stan',
        'label'       => __( 'Stan', 'woocommerce' ),
        'description' => __( 'Podaj stan plyty.', 'woocommerce' ),
        'desc_tip'    => 'true',
        'options'     => array(
            ''  => __( 'Select product condition', 'woocommerce' ),
            '1' => __('1', 'woocommerce' ),
            '2' => __('2', 'woocommerce' ),
        )
    ) );

    echo '</div>';
}

// Save Fields values to database when submitted (Backend)
add_action( 'woocommerce_process_product_meta', 'woo_save_custom_general_fields' );
function woo_save_custom_general_fields( $post_id ){
    // Saving custom field value
    $posted_value = $_POST['_Stan'];
    if( ! empty( $posted_value ) ){
        update_post_meta( $post_id, '_Stan', esc_attr( $posted_value ) );
    }
}

add_action( 'woocommerce_product_meta_start', 'woo_display_custom_general_fields_values', 50 );
function woo_display_custom_general_fields_values() {
    global $product;

    // compatibility with WC +3
    $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

    echo '<span class="stan">Stan: ' . get_post_meta( $product_id, '_Stan', true ) . '</span>';
}

我想在单个产品页面中显示包装器html标记(例如<div>)类"hidden",具体取决于自定义字段值。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我有一个关于您正在使用的代码的更新。因此,请将此替换为此答案中的更新版本:Add a drop down to product edit pages in product data "General" settings tab

现在,您可以根据此自定义字段值构建一个自定义条件函数,用于显示或不显示特定的类标记:

// Custom Conditional function for "Stan" product option
function is_stan_defined(){
    $stan = get_post_meta( get_the_id(), '_Stan', true );
    return empty( $stan ) ? false : true;
}

代码进入活动子主题(或活动主题)的function.php文件。

USAGE示例

下面我们根据自定义字段值(空或不是)有条件地将"hidden"类添加到<div> html标记:

<?php $stan = is_stan_defined() ? '' : ' hidden'; ?>

<div class="wrapper<?php echo $stan; ?>">
    <p>My content</p>
</div>

这是经过测试和运作的......