• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Решено Добавить кнопку "Купить в один клик"

Nikita21

Форумчанин
#1
Хочу добавить кнопку купить в один клик, которая будет брать ссылку из админки. Примерный код я нашел, но он касается РРЦ. Проблема в том, что атрибут "wc_rrp_product_field" по всей видимости является родным для woocommerce, и для того чтобы вы водилась ссылка необходим новый атрибут плюс хук к нему, а этого я делать не умею.
Примерный код, прописывается в function.php.
Код:
/* ----------------------------------------------------------------------------------- */
/* Купить в один клик
/*----------------------------------------------------------------------------------- */
add_action( 'woocommerce_product_options_pricing', 'wc_rrp_product_field' );

function wc_rrp_product_field() {
woocommerce_wp_text_input( array( 'id' => 'rrp_price', 'class' => 'wc_input_price short', 'label' => __( 'РРЦ', 'woocommerce' ) . ' (' . get_woocommerce_currency_symbol() . ')' ) );
}

add_action( 'save_post', 'wc_rrp_save_product' );

function wc_rrp_save_product( $product_id ) {
// Если это автосохранение, то ничего не делаем, сохраняем данные только при нажатии на кнопку Обновить
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return;
if ( isset( $_POST['rrp_price'] ) ) {
if ( is_string( $_POST['rrp_price'] ) )
update_post_meta( $product_id, 'rrp_price', $_POST['rrp_price'] );
}
else delete_post_meta( $product_id, 'rrp_price' );
}

// и выводит в одиночном формате
add_action( 'woocommerce_product_meta_start', 'wc_rrp_show', 5 );

function wc_rrp_show() {
global $product;
// Ничего не предпринимаем для вариативных товаров
if ( $product->product_type <> 'variable' ) {
$rrp = get_post_meta( $product->id, 'rrp_price', true );
echo '<div class="woocommerce_msrp">';
echo '<div style="color:red;">';
_e( 'РРЦ : ', 'woocommerce' );
echo '<span class="woocommerce-rrp-price">' . woocommerce_price( $rrp ) . '</span>';
echo '</div>';
echo '</div>';
}
}
// Дополнительно: Для вывода на страницах архивов (в товарных категориях, например)
add_action( 'woocommerce_after_shop_loop_item', 'wc_rrp_show' );
/* ----------------------------------------------------------------------------------- */
На данный момент код работает следующим образом: прописываются цифры в админке
, затем выводятся в карточке товара и в разделе все товары
.
Если поменять строку так
Код:
function wc_rrp_show() {
global $product;
// Ничего не предпринимаем для вариативных товаров
if ( $product->product_type <> 'variable' ) {
$rrp = get_post_meta( $product->id, 'rrp_price', true );
echo '<div class="woocommerce_msrp">';
echo '<a href='. woocommerce_price( $rrp ) . '>Купить в один клик</a>;
echo '</div>';
echo '</div>';
}
}
То получаем почти то что надо. Проблема в том, что в админке в этой графе

нельзя прописать ничего кроме цифр. И знак рубля остается. Когда удаляю код функции, отвечающей за знак рубля (. get_woocommerce_currency_symbol) выходит ошибка.
Что необходимо сделать, чтобы в графу РРЦ можно было сохранять url? Как правильно убрать get_woocommerce_currency_symbol? Нужно ли прописывать новый атрибу, и если да, то где можно почитать как это все реализовать?)
P.s. Я нуб в php, из всех функций знаю только include. =) Сильно не ругайтесь)
 

D&B

Администратор
Команда форума
Местный
#2
Все это очень любопытно, но не проще ли использовать готовый плагин?
 

Nikita21

Форумчанин
#5
Смотрел я этот плагин. Не совсем то, что нужно. А нужно, что бы на каждый товар можно было сделать свою внешнюю ссылку. Ладно, я уже забил. Буду в описании добавлять html.=)
 

D&B

Администратор
Команда форума
Местный
#6
Подобных плагинов довольно много. Гуглите "Buy one click WooCommerce"