Php 如果条件不适用于商业,则为产品类型

Php 如果条件不适用于商业,则为产品类型,php,woocommerce,Php,Woocommerce,如果状况无法正常工作,则我的产品类型为。其用意如下: 如果产品类型=变量,则执行X elseif产品类型=simple,do Y 完整代码如下: $product = new WC_Product( get_the_ID() ); if( $product->is_type( 'variable' ) ){ /* as per https://wordpress.stackexchange.com/questions/276941/woocommerce-add-extra-field

如果状况无法正常工作,则我的产品类型为
。其用意如下:

如果
产品类型=
变量
,则执行X

elseif
产品类型=
simple
,do Y

完整代码如下:

$product = new WC_Product( get_the_ID() );

if( $product->is_type( 'variable' ) ){

/* as per https://wordpress.stackexchange.com/questions/276941/woocommerce-add-extra-field-to-variation-product/277556 
based on http://www.remicorson.com/woocommerce-custom-fields-for-variations/ */

add_action( 'woocommerce_product_after_variable_attributes', 'variation_settings_fields', 10, 3 );
add_action( 'woocommerce_save_product_variation', 'save_variation_settings_fields', 10, 2 );
add_filter( 'woocommerce_available_variation', 'load_variation_settings_fields' );

function variation_settings_fields( $loop, $variation_data, $variation ) {
    woocommerce_wp_text_input(
        array(
            'id'            => "custom_MPN{$loop}",
            'name'          => "custom_MPN[{$loop}]",
            'value'         => get_post_meta( $variation->ID, 'custom_MPN', true ),
            'label'         => __( 'MPN variation', 'woocommerce' ),
            'desc_tip'      => true,
            'description'   => __( 'Manufacturer Product Number (hand-coded field).', 'woocommerce' ),
            'wrapper_class' => 'form-row form-row-full',
        )
    );

    woocommerce_wp_text_input(
        array(
            'id'            => "custom_GTIN{$loop}",
            'name'          => "custom_GTIN[{$loop}]",
            'value'         => get_post_meta( $variation->ID, 'custom_GTIN', true ),
            'label'         => __( 'GTIN variation', 'woocommerce' ),
            'desc_tip'      => true,
            'description'   => __( 'Global Trade Item Number (hand-coded field).', 'woocommerce' ),
            'wrapper_class' => 'form-row form-row-full',
        )
    );
}

function save_variation_settings_fields( $variation_id, $loop ) {
    $text_field = $_POST['custom_MPN'][ $loop ];

    if ( ! empty( $text_field ) ) {
        update_post_meta( $variation_id, 'custom_MPN', esc_attr( $text_field ));
    }

    $text_field = $_POST['custom_GTIN'][ $loop ];

    if ( ! empty( $text_field ) ) {
        update_post_meta( $variation_id, 'custom_GTIN', esc_attr( $text_field ));
    }
}

function load_variation_settings_fields( $variation ) {     
    $variation['custom_MPN'] = get_post_meta( $variation[ 'variation_id' ], 'custom_MPN', true );
    $variation['custom_GTIN'] = get_post_meta( $variation[ 'variation_id' ], 'custom_GTIN', true );

    return $variation;
}



} elseif( $product->is_type( 'simple' ) ){



/* Product identification meta data below the product title: GTIN */

// https://businessbloomer.com/woocommerce-add-text-add-cart-single-product-page/   
add_action( 'woocommerce_single_product_summary', 'custom_data_above_add_to_cart_button', 6 );
function custom_data_above_add_to_cart_button( $product ) {

// https://wordpress.stackexchange.com/a/165757/135006
// Be wary - this solution was needed to make code work: https://stackoverflow.com/a/6110690/9095603

// GTIN
      if ( get_post_meta( get_the_id(), 'wccaf_gtin', true ) ) {

        echo '<div class="wccaf_gtin">GTIN: '.get_post_meta( get_the_id(), 'wccaf_gtin', true ).'</div>';

    } else {

        echo '<div class="wccaf_gtin">GTIN unspecified.</div>';

    }


// MPN
      if ( get_post_meta( get_the_id(), 'wccaf_mpn', true ) ) {

        echo '<div class="wccaf_mpn">MPN: '.get_post_meta( get_the_id(), 'wccaf_mpn', true ).'</div>';

    } else {

        echo '<div class="wccaf_mpn">MPN unspecified.</div>';

    }

}



}

这是一种经过测试的工作条件,适用于您的情况:

add_action( 'wp_head', 'wc_variable_simple_conditions' );
function wc_variable_simple_conditions() {
    if(is_product()){
        global $post;
        $post_id = $post->ID;
        $product = wc_get_product( $post_id );
        $type = $product->get_type();
        if( $type == 'variable' ){
            add_action( 'woocommerce_product_after_variable_attributes', 'variation_settings_fields', 10, 3 );
            add_action( 'woocommerce_save_product_variation', 'save_variation_settings_fields', 10, 2 );
            add_filter( 'woocommerce_available_variation', 'load_variation_settings_fields' );

        } elseif( $type == 'simple' ){
            add_action( 'woocommerce_single_product_summary', 'custom_data_above_add_to_cart_button', 6 );
        }
    }
}

如果使用此选项无法解决您的问题,您可能需要修改函数。

首先,我将在If-else语句之外获取所有函数。请进一步解释
无法正常工作。
。错误/输出错误?@Joseph_J请随意发布代码的改进版本,我的PHP不是很流利,所以这会很有帮助。@Justinas没有错误-它只是没有按预期应用条件。您需要更好地解释您的问题。我们不知道你想要它做什么,它实际上在做什么。
add_action( 'wp_head', 'wc_variable_simple_conditions' );
function wc_variable_simple_conditions() {
    if(is_product()){
        global $post;
        $post_id = $post->ID;
        $product = wc_get_product( $post_id );
        $type = $product->get_type();
        if( $type == 'variable' ){
            add_action( 'woocommerce_product_after_variable_attributes', 'variation_settings_fields', 10, 3 );
            add_action( 'woocommerce_save_product_variation', 'save_variation_settings_fields', 10, 2 );
            add_filter( 'woocommerce_available_variation', 'load_variation_settings_fields' );

        } elseif( $type == 'simple' ){
            add_action( 'woocommerce_single_product_summary', 'custom_data_above_add_to_cart_button', 6 );
        }
    }
}