Я пытаюсь создать автоматический текст в описании статей WooCommerce и выложить «статья доступна только в магазине».
Я думал о том, чтобы поместить его в функцию, подобную этой:
add_filter ('woocommerce_short_description', 'in_single_product', 10, 2);
function in_single_product () {
echo '<p> article only available in the store. </ p>';
}
Но это заменит текст, который уже написан в кратком описании товара. Если я не положил текст, ничего не появляется.
Можно ли поставить текст кода «статья доступна только в магазине» без краткого описания товара?
Спасибо.
Так что вы можете использовать это так:
add_filter( 'woocommerce_short_description', 'single_product_short_description', 10, 1 );
function single_product_short_description( $post_excerpt ){
global $product;
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;
if ( is_single( $product_id ) )
$post_excerpt = '<p class="some-class">' . __( "article only available in the store.", "woocommerce" ) . '</p>';
return $post_excerpt;
}
Обычно этот код переопределяет существующий текст краткого описания на отдельных страницах продукта, если это краткое описание существует…
(обновление) — связано с вашим комментарием
Если вы хотите отобразить это без переопределения выдержки (краткое описание), вы можете добавить его до этого способа:
add_filter( 'woocommerce_short_description', 'single_product_short_description', 10, 1 );
function single_product_short_description( $post_excerpt ){
global $product;
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;
if ( is_single( $product_id ) )
$post_excerpt = '<div class="product-message"><p>' . __( "Article only available in the store.", "woocommerce" ) . '</p></div>' . $post_excerpt;
return $post_excerpt;
}
Таким образом, вы получите ваше сообщение до, а после (если краткое описание существует) краткое описание…
Вы можете настроить стиль таргетинга в своей активной теме. style.css
подать селектор классов .product-message
например, таким образом:
.product-message {
background-color:#eee;
border: solid 1px #666;
padding: 10px;
}
Вам нужно будет написать свои собственные правила стиля, чтобы получить его, как вы хотите.
Я обновляюсь, чтобы сказать, что нашел решение своей проблемы:
Я создал «класс доставки» в разделе «продукты» с названием «артикул, доступный только в магазине» и слаг «productshop».
Затем в (mytheme) /woocommerce/single-product/meta.php я включил:
<?php
$clase=$product->get_shipping_class();
if ($clase=="productshop") {
if (get_locale()=='en_US') {echo 'Product only available in store';}
else {echo 'Producte només disponible a la botiga';}
}?>
Тогда мне остается только выбрать способ доставки товара в метод.
И это все!
Спасибо за ваши ответы