WooCommerce: Показать вариант продукта / описание переменной - PullRequest
0 голосов
/ 28 октября 2019

Я хотел бы всегда отображать описания вариантов для каждого варианта на странице продукта (в настоящее время он отображает описание только того варианта, который выбран в раскрывающемся списке). Кажется, я не могу получить доступ к

В plugins/woocommerce/templates/single-product/add-to-cart/variation.php, к нему, похоже, можно получить доступ через:

{{{ data.variation.variation_description }}}

При проверке нужного поля на странице редактирования продукта, его name=is:

variable_description0

Я пытался получить доступ через оба этих параметра, а также:

if($product && taxonomy_exists($attribute)) {
  $terms = wc_get_product_terms($product->get_id(), $attribute, array(
    'fields' => 'all',
  ));

  foreach($terms as $term) {

    $variable_description = get_post_meta( $id, '_variation_description', true );

    if(in_array($term->slug, $options, true)) {
      $radios .= '<div><input type="radio" name="'.esc_attr($name).'" value="'.esc_attr($term->slug).'" '.checked(sanitize_title($args['selected']), $term->slug, false).'><label for="'.esc_attr($term->slug).'">'.esc_html(apply_filters('woocommerce_variation_option_name', $term->name)).' <span class="description">' . 'DESCRIPTION' . '</span></label></div>';
    }
  }
} else {
  foreach($options as $option) {

    // var_dump($options);
    $variable_description = get_post_meta( $id, '_variation_description', true );


    $checked    = sanitize_title($args['selected']) === $args['selected'] ? checked($args['selected'], sanitize_title($option), false) : checked($args['selected'], $option, false);
    $radios    .= '<div><input type="radio" name="'.esc_attr($name).'" value="'.esc_attr($option).'" id="'.sanitize_title($option).'" '.$checked.'><label for="'.sanitize_title($option).'">'.esc_html(apply_filters('woocommerce_variation_option_name', $option)).' <span class="description">' . $variable_description . '</span></label></div>';
  }
}

Однако все возвращается как NULL.

Что я должен использовать для$ id / как мне распечатать это для всех переменных?

1 Ответ

0 голосов
/ 28 октября 2019

В итоге я смог добиться этого, получив все варианты продукта, просматривая их, находя совпадения, а затем задавая это описание в качестве переменной. Это кажется немного неуклюжим и может вызвать проблемы для больших каталогов, поэтому любые улучшения приветствуются!

// Get all variations of product
$variations1 = $product->get_children();

// Loop through variations to find description
foreach ($variations1 as $value):

    $single_variation = new WC_Product_Variation($value);

    $variation_full_name = $single_variation->name;
    $variation_name = str_replace($product->name . " - ", "", $variation_full_name);

    // Set the variable description
    if ( $option === $variation_name ):
        $variable_description = $single_variation->description;
    endif;

endforeach;
...