2016-12-07 8 views
2

変数の説明をwoocommerceの製品ページに表示しようとしています。 woocommerceラジオボタンという名前のプラグインをインストールしました。私の変数製品と価格をselectではなくラジオボタンとして表示します。可変価格の後に変数の説明を表示するWooCommerce

私はvariable.phpファイルを編集しています。このプラグインでは(私は一度終了して私の子供のテーマに転送します)、基本的には$ variable_descriptionという名前の変数に変数の説明を表示する必要があります。

printf('<div> 
    <input type="radio" name="%1$s" value="%2$s" id="%3$s" %4$s> 
    <label for="%3$s">%5$s</label> 
    <label>'.$variable_description.'</label> 
    </div>', $input_name, $esc_value, $id, $checked, $filtered_label); 

私が理解していないデータベースの構造のため、このデータをデータベースから回復することができません。

これを復旧し、各可変価格の変数説明を表示するためのショートコードまたは機能をご存知ですか?

私が編集している機能では、ラジオボタンの横の各バリエーションの価格が最初のラベルとして正しく表示されます。関数の完全なコードは次のとおりです。

if (! function_exists('print_attribute_radio')) { 
    function print_attribute_radio($checked_value, $value, $label, $name, $product_id) { 

     // This handles < 2.4.0 bw compatibility where text attributes were not sanitized. 
     $checked = sanitize_title($checked_value) === $checked_value ? checked($checked_value, sanitize_title($value), false) : checked($checked_value, $value, false); 

     $input_name = 'attribute_' . esc_attr($name) ; 
     $esc_value = esc_attr($value); 
     $id = esc_attr($name . '_v_' . $value); 
     $filtered_label = apply_filters('woocommerce_variation_option_name', $label); 

    //here is where I try to recover the variable_description 

     global $wpdb; 
     $post_id = $product_id + 3; 

     $querystr = "SELECT wpostmeta.meta_value 
        FROM $wpdb->postmeta wpostmeta 
        WHERE wpostmeta.post_id = '$post_id' 
        AND wpostmeta.meta_key = '_variation_description' 
        ORDER BY wpostmeta.meta_value DESC 
        "; 


    $variable_description = $wpdb->get_var($querystr); 

     printf('<div> 
     <input type="radio" name="%1$s" value="%2$s" id="%3$s" %4$s> 
     <label for="%3$s">%5$s</label> 
     <label>'.$variable_description.'</label> 
     </div>', $input_name, $esc_value, $id, $checked, $filtered_label); 

    } 
} 

は、あなたが(それははるかに短いと手頃な価格です)の代わりにWordPress get_post_meta()機能を使用することができますポストメタデータを取得するには、あなたに

答えて

1

ありがとうございます。

だからあなたのコードでは、今のようになります。

if (! function_exists('print_attribute_radio')) { 
    function print_attribute_radio($checked_value, $value, $label, $name, $product_id) { 

     // This handles < 2.4.0 bw compatibility where text attributes were not sanitized. 
     $checked = sanitize_title($checked_value) === $checked_value ? checked($checked_value, sanitize_title($value), false) : checked($checked_value, $value, false); 

     $input_name = 'attribute_' . esc_attr($name) ; 
     $esc_value = esc_attr($value); 
     $id = esc_attr($name . '_v_' . $value); 
     $filtered_label = apply_filters('woocommerce_variation_option_name', $label); 

     // HERE the product variation description 
     $variation_id = $product_id + 3; 
     $variable_description = get_post_meta($variation_id, '_variation_description', true); 

     printf('<div> 
     <input type="radio" name="%1$s" value="%2$s" id="%3$s" %4$s> 
     <label for="%3$s">%5$s</label> 
     <label>'.$variable_description.'</label> 
     </div>', $input_name, $esc_value, $id, $checked, $filtered_label); 
    } 
} 
関連する問題