Как я могу изменить этот код PHP для изменения. Выберите параметр на основе идентификатора элемента select в плагине Woocommerce для WordPress? Я считаю, что нашел правильный PHP-файл в wc-template-function.php, но мои недостатки в PHP-навыках удерживают меня. Вот то, что я до сих пор:Как изменить текст кнопки «Выбрать вариант» в Woocommerce?
if (! function_exists('wc_dropdown_variation_attribute_options')) {
/**
* Output a list of variation attributes for use in the cart forms.
*
* @param array $args
* @since 2.4.0
*/
function wc_dropdown_variation_attribute_options($args = array()) {
$args = wp_parse_args($args, array(
'options' => false,
'attribute' => false,
'product' => false,
'selected' => false,
'name' => '',
'id' => '',
'class' => '',
'show_option_none' => __('Choose an option', 'woocommerce'),
'show_option_color' => __('Choose a color', 'woocommerce'),
'show_option_size' => __('Choose a size', 'woocommerce')
));
$options = $args['options'];
$product = $args['product'];
$attribute = $args['attribute'];
$name = $args['name'] ? $args['name'] : 'attribute_' . sanitize_title($attribute);
$id = $args['id'] ? $args['id'] : sanitize_title($attribute);
$class = $args['class'];
if (empty($options) && ! empty($product) && ! empty($attribute)) {
$attributes = $product->get_variation_attributes();
$options = $attributes[ $attribute ];
}
echo '<select id="' . esc_attr($id) . '" class="' . esc_attr($class) . '" name="' . esc_attr($name) . '" data-attribute_name="attribute_' . esc_attr(sanitize_title($attribute)) . '">';
if ($args['show_option_none']) {
echo '<option value="">' . esc_html($args['show_option_none']) . '</option>';
}
if ($args['$id_colors']) {
echo '<option value="">' . esc_html($args['show_option_color']) . '</option>';
}
if ($args['$id_sizes']) {
echo '<option value="">' . esc_html($args['show_option_size']) . '</option>';
}
if (! empty($options)) {
if ($product && taxonomy_exists($attribute)) {
// Get terms if this is a taxonomy - ordered. We need the names too.
$terms = wc_get_product_terms($product->id, $attribute, array('fields' => 'all'));
foreach ($terms as $term) {
if (in_array($term->slug, $options)) {
echo '<option value="' . esc_attr($term->slug) . '" ' . selected(sanitize_title($args['selected']), $term->slug, false) . '>' . apply_filters('woocommerce_variation_option_name', $term->name) . '</option>';
}
}
} else {
foreach ($options as $option) {
// This handles < 2.4.0 bw compatibility where text attributes were not sanitized.
$selected = sanitize_title($args['selected']) === $args['selected'] ? selected($args['selected'], sanitize_title($option), false) : selected($args['selected'], $option, false);
echo '<option value="' . esc_attr($option) . '" ' . $selected . '>' . esc_html(apply_filters('woocommerce_variation_option_name', $option)) . '</option>';
}
}
}
echo '</select>';
}
}
Вы можете увидеть, где я пытался добавить show_option_color и show_option_size в к массиву, а затем добавить, если заявления для них, но не кажется, что это будет работать. Я не уверен, как ссылаться на идентификатор элемента select и записывать оператор if на основе, если он является правильным элементом выбора.
Вот HTML, который я пытаюсь настроить.
<select id="sizes" class="" name="attribute_sizes" data-attribute_name="attribute_sizes">Want this to say Choose a size</select>
<select id="colors" class="" name="attribute_sizes" data-attribute_name="attribute_sizes">Want this to say Choose a color</select>
variable.php строки кода 27 - 38:
<?php foreach ($attributes as $attribute_name => $options) : ?>
<tr>
<td class="label"><label for="<?php echo sanitize_title($attribute_name); ?>"><?php echo wc_attribute_label($attribute_name); ?></label></td>
<td class="value">
<?php
$selected = isset($_REQUEST[ 'attribute_' . sanitize_title($attribute_name) ]) ? wc_clean($_REQUEST[ 'attribute_' . sanitize_title($attribute_name) ]) : $product->get_variation_default_attribute($attribute_name);
wc_dropdown_variation_attribute_options(array('options' => $options, 'attribute' => $attribute_name, 'product' => $product, 'selected' => $selected));
echo end($attribute_keys) === $attribute_name ? '<a class="reset_variations" href="#">' . __('Clear selection', 'woocommerce') . '</a>' : '';
?>
</td>
</tr>
<?php endforeach;?>
Можете ли вы прояснить эту деталь? 'Выберите вариант, основанный на идентификаторе в' Вы имели в виду на основе идентификатора продукта? –
Несомненно. У каждого продукта нет возможности выбрать, выбрать параметр размера, выбрать параметр цвета или оба варианта. Однако вместо того, чтобы говорить о выборе размера или выборе цвета, все они просто говорят «Выберите вариант». Я просто хочу, чтобы каждый сказал, выберите цвет или выберите размер, основанный на том, что вы на самом деле выбираете. Выбирать цветные кнопки имеют идентификатор #colors, а кнопки выбора размера имеют идентификатор #sizes, но текст отображения для обоих говорит «Выберите вариант. Надеюсь, это уточнит. – jfoutch
Да, это помогает. коротко! –