Я хочу иметь возможность отображать конкретный текст «Добавить на карту» для каждого отдельного продукта, если он установлен.
Существуют некоторые плагины, но они «просто» охватывают текст «Добавить на карту» для категорий или типов продуктов. Вот почему я попробовал этот способ, используя пользовательское поле.
Поэтому я написал этот код прямо в файле шаблона. Этот код работает, но это хорошо, безопасно, в нужном месте?
// file: /woocommerce-templates/single-product/add-to-cart/simple.php
<button "..." >
<?php
$text = get_post_meta($product->get_id(), 'add_to_cart_text', true);
if ($text) {
echo esc_html($text);
} else {
echo esc_html($product->single_add_to_cart_text()); // this line is default
}
?>
</button>
Я бы использовал это вместо:
<?php
add_filter( 'woocommerce_product_add_to_cart_text', 'custom_add_to_cart_button_text', 20, 2 );
function custom_add_to_cart_button_text( $button_text, $product ) {
$custom_button_text = get_post_meta( $product->get_id(), 'add_to_cart_text', true );
// If there is custom text set for this product, then display it instead of the default text.
if ( ! empty( $custom_button_text ) ) {
$button_text = __( $custom_button_text, 'text-domain' );
}
return $button_text;
}
Вставьте его в ваши functions.php
простой фрагмент может помочь вам
add_filter( 'add_to_cart_text', 'woo_custom_single_add_to_cart_text' ); // < 2.1
add_filter( 'woocommerce_product_single_add_to_cart_text', 'woo_custom_single_add_to_cart_text' ); // 2.1 +
function woo_custom_single_add_to_cart_text() {
return __( 'Buy', 'woocommerce' );
}
add_filter('woocommerce_product_add_to_cart_text', 'wh_archive_custom_cart_button_text'); // 2.1 +
function wh_archive_custom_cart_button_text()
{
return __('Buy', 'woocommerce');
}