• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Как вывести название атрибута вместо ярлыка или изменить кодировку

Solomon Fox

Форумчанин
Добрый день. Есть плагин, который выводит товары списком так вот он выводит с товарами и ярлыки - ссылки. А они не воспринимаюсь русский язык и отображаются кракозябрами. Вопрос, как вместо ярлыков вывести название атрибутов или изменить кодировку что бы русский язык отображался правильно.
Пробовал вывести заголовок через.
echo wc_attribute_label( $attribute['name'] );
не работает.
Вот код:
<?php
add_action( 'add_theme_support', 'woocommerce_variable_add_to_cart' );
add_action( 'add_theme_support', 'find_valid_variations' );
function woocommerce_variable_add_to_cart(){
global $product, $post;
$variations = find_valid_variations();
// Check if the special 'price_grid' meta is set, if it is, load the default template:
if ( get_post_meta($post->ID, 'price_grid', true) ) {
// Enqueue variation scripts
wp_enqueue_script( 'wc-add-to-cart-variation' );
// Load the template
wc_get_template( 'single-product/add-to-cart/variable.php', array(
'available_variations' => $product->get_available_variations(),
'attributes' => $product->get_variation_attributes(),
'selected_attributes' => $product->get_variation_default_attributes(),
'available_name' => $product->get_available_name(),
) );
return;
}
// Cool, lets do our own template!
$attributes = $product->get_attributes();
?>
<table class="variations variations-grid" cellspacing="0">
<tbody>
<?php
foreach ($variations as $key => $value) {
if( !$value['variation_is_visible'] ) continue;
?>
<tr>
<td>
<?php foreach($value['attributes'] as $key => $val ) {
$val = str_replace(array('-','_'), ' ', $val);
printf( '<span class="attr attr-%s">%s</span>', $key, ucwords($val) );
} ?>

</td>
<?php
if ($value['price_html']) {
echo"<td>";
echo $value['price_html'];
echo"</td>";
}
?>
</td>
<?php
echo"<td>";
echo $value['price_html'];
echo"</td>";
?>
<td>

<?php if( $value['is_in_stock'] ) { ?>
<form class="cart" action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" method="post" enctype='multipart/form-data'>
<?php woocommerce_quantity_input(); ?>
<?php
if(!empty($value['attributes'])){
foreach ($value['attributes'] as $attr_key => $attr_value) {
?>
<input type="hidden" name="<?php echo $attr_key?>" value="<?php echo $attr_value?>">
<?php
}
}
?>
<button type="submit" class="single_add_to_cart_button btn btn-primary"><span class="glyphicon glyphicon-tag"></span>Добавить в корзину</button>
<input type="hidden" name="variation_id" value="<?php echo $value['variation_id']?>" />
<input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
<input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $post->ID ); ?>" />
</form>
<?php } else { ?>
<p class="stock out-of-stock"><?php _e( 'This product is currently out of stock and unavailable.', 'woocommerce' ); ?></p>
<?php } ?>
</td>
</tr>
<?php } ?>
</tbody>
</table>
<?php
}
function find_valid_variations() {
global $product;
$variations = $product->get_available_variations();
$attributes = $product->get_attributes();
$new_variants = array();
foreach( $variations as $variation ) {
$valid = true;
foreach( $attributes as $slug => $args ) {
if( array_key_exists("attribute_$slug", $variation['attributes']) && !empty($variation['attributes']["attribute_$slug"]) ) {
} else {
$valid = false;
foreach( explode( '|', $attributes[$slug]['value']) as $attribute ) {
$attribute = trim( $attribute );
$new_variant = $variation;
$new_variant['attributes']["attribute_$slug"] = $attribute;
$new_variants[] = $new_variant;
}
}
}
if( $valid )
$new_variants[] = $variation;
}
return $new_variants;
}
?>
 

Solomon Fox

Форумчанин
<?php
if ($value['price_html']) {
echo"<td>";
echo $value['price_html'];
echo"</td>";
}
?>
Вот куда нужно вывести название атрибута
 

searchingman

Гуру
Местный
Добрый день. Есть плагин, который выводит товары списком так вот он выводит с товарами и ярлыки - ссылки. А они не воспринимаюсь русский язык и отображаются кракозябрами. Вопрос, как вместо ярлыков вывести название атрибутов или изменить кодировку что бы русский язык отображался правильно.
Пробовал вывести заголовок через.
echo wc_attribute_label( $attribute['name'] );
не работает.
Вот код:
<?php
add_action( 'add_theme_support', 'woocommerce_variable_add_to_cart' );
add_action( 'add_theme_support', 'find_valid_variations' );
function woocommerce_variable_add_to_cart(){
global $product, $post;
$variations = find_valid_variations();
// Check if the special 'price_grid' meta is set, if it is, load the default template:
if ( get_post_meta($post->ID, 'price_grid', true) ) {
// Enqueue variation scripts
wp_enqueue_script( 'wc-add-to-cart-variation' );
// Load the template
wc_get_template( 'single-product/add-to-cart/variable.php', array(
'available_variations' => $product->get_available_variations(),
'attributes' => $product->get_variation_attributes(),
'selected_attributes' => $product->get_variation_default_attributes(),
'available_name' => $product->get_available_name(),
) );
return;
}
// Cool, lets do our own template!
$attributes = $product->get_attributes();
?>
<table class="variations variations-grid" cellspacing="0">
<tbody>
<?php
foreach ($variations as $key => $value) {
if( !$value['variation_is_visible'] ) continue;
?>
<tr>
<td>
<?php foreach($value['attributes'] as $key => $val ) {
$val = str_replace(array('-','_'), ' ', $val);
printf( '<span class="attr attr-%s">%s</span>', $key, ucwords($val) );
} ?>

</td>
<?php
if ($value['price_html']) {
echo"<td>";
echo $value['price_html'];
echo"</td>";
}
?>
</td>
<?php
echo"<td>";
echo $value['price_html'];
echo"</td>";
?>
<td>

<?php if( $value['is_in_stock'] ) { ?>
<form class="cart" action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" method="post" enctype='multipart/form-data'>
<?php woocommerce_quantity_input(); ?>
<?php
if(!empty($value['attributes'])){
foreach ($value['attributes'] as $attr_key => $attr_value) {
?>
<input type="hidden" name="<?php echo $attr_key?>" value="<?php echo $attr_value?>">
<?php
}
}
?>
<button type="submit" class="single_add_to_cart_button btn btn-primary"><span class="glyphicon glyphicon-tag"></span>Добавить в корзину</button>
<input type="hidden" name="variation_id" value="<?php echo $value['variation_id']?>" />
<input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
<input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $post->ID ); ?>" />
</form>
<?php } else { ?>
<p class="stock out-of-stock"><?php _e( 'This product is currently out of stock and unavailable.', 'woocommerce' ); ?></p>
<?php } ?>
</td>
</tr>
<?php } ?>
</tbody>
</table>
<?php
}
function find_valid_variations() {
global $product;
$variations = $product->get_available_variations();
$attributes = $product->get_attributes();
$new_variants = array();
foreach( $variations as $variation ) {
$valid = true;
foreach( $attributes as $slug => $args ) {
if( array_key_exists("attribute_$slug", $variation['attributes']) && !empty($variation['attributes']["attribute_$slug"]) ) {
} else {
$valid = false;
foreach( explode( '|', $attributes[$slug]['value']) as $attribute ) {
$attribute = trim( $attribute );
$new_variant = $variation;
$new_variant['attributes']["attribute_$slug"] = $attribute;
$new_variants[] = $new_variant;
}
}
}
if( $valid )
$new_variants[] = $variation;
}
return $new_variants;
}
?>
Какой плагин используется? Ссылку на него дайте.
 

Solomon Fox

Форумчанин
Работает только с английскими буквами, как можно решить?
 

Вложения

  • кракоз.jpg
    кракоз.jpg
    185.1 KB · Просмотры: 10

searchingman

Гуру
Местный

Solomon Fox

Форумчанин
Такая ошибка наблюдается только при использовании этого плагина, а код который выше это фаил плагина который отвечает за вывод атрибутов. И если удастся либо убрать кракозябры, либо добавить новое поле то поле нужно буде добавлять туда, а вот с невосприимчивостью к кириллице не знаю, что делать.
 

searchingman

Гуру
Местный
Такая ошибка наблюдается только при использовании этого плагина, а код который выше это фаил плагина который отвечает за вывод атрибутов. И если удастся либо убрать кракозябры, либо добавить новое поле то поле нужно буде добавлять туда, а вот с невосприимчивостью к кириллице не знаю, что делать.
Так я и прошу дать ссылку на плагин, код которого приведен выше, т.е. который отвечает за вывод атрибутов.
 

searchingman

Гуру
Местный
Указанный плагин не выводит атрибуты и в нем нет кода, указанного в первом сообщении.
Н-р, я не нашел в нем функции find_valid_variations() и других.
Если не хотите давать ссылку на плагин вывода атрибутов или Вы этот код писали сами, то так и скажите.

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

Solomon Fox

Форумчанин
Этот плагин меняет отображение атрибутов, которые уже заданы. Он делает их списком и добавляет к ним кнопку купить. Если его не ставить, то дополнительные атрибуты отображаются по умолчанию в виде выпадающего меню. Код о котором я говорю находится внутри плагина в файле grid.php
Я не в коем разе ни хотел вас обидеть или чем-то оскорбить, возможно мы просто друг-друга не поняли. На скрине я приложил полный путь до файлов, о которых говорю. Надеюсь так станет яснее. В любом случае спасибо вам за уделенное время.
 

Вложения

  • кракоз2.jpg
    кракоз2.jpg
    94.2 KB · Просмотры: 9

Solomon Fox

Форумчанин
Остальные плагины, которые могли бы выводить атрибуты - выключены. С атрибутами работает только он.
 

searchingman

Гуру
Местный
Эта ссылка и есть на этот плагин. Только у него такая ошибка
Уже ссылку оставлял. https://ru.wordpress.org/plugins/woocommerce-ajax-add-to-cart-for-variable-products/
Не пойму, почему и в первый раз и повторно Вы даете ссылку на один плагин, но в действительности речь идет совершенно о другом https://wordpress.org/plugins/woocommerce-variable-product-ajax/.
 

Solomon Fox

Форумчанин
Святые угодники я почему-то решил что они одинаковые. Несколько раз проверял ведь. А ведь точно разные.
 

searchingman

Гуру
Местный
Не пойму, почему и в первый раз и повторно Вы даете ссылку на один плагин, но в действительности речь идет совершенно о другом https://wordpress.org/plugins/woocommerce-variable-product-ajax/.
Плагин крайне не рекомендуется к использованию, т.к. имеет неисправленные баги (тестировал на WC 2.4.x ) , которые автор исправлять не собирается.
 

Solomon Fox

Форумчанин
хорошо, купил платный плагин)). Там без глюков все отображается. Только теперь другой вопрос у этот плагина товары можно было выводить во всплывающем окне. Т.е. щелкаешь на опции товара, а там всплывающее окно с его выбранными характеристиками. Возможно ли как-то повторить этот функционал?
 
Сверху Снизу