WordPress Siparişlerde Müşteriye Resim Yüklemesine İzin Verme

0

Farkındayım çok uzun bir başlık oldu ama konuyu özetlemek adına böyle bir başlık seçmeyi tercih ettim.Bu başlık ne anlama geliyor ve bu başlık nereden türedi hemen anlatmak istiyorum.Müşterilerimden biri müşterilerin sipariş sırasında logolarını siparişlerine eklemesini istedi.Baskı işleri yapan bu müşterim bir kaç özellik belirterek isteklerini söyledi.İlk olarak sipariş sırında logo yüklemek istiyor musun şeklinde bir soru yer alacak, sonrasında Evet tıklarsa logo yükleme alanı açılacak ve bu logonun basım yerini seçecek ön yüz arka yüz veya iki taraf.

Müşterinin isteklerini başarı ile yerine getirdik eklenti kullanmadan WordPress geliştirmek çok heycanlı olsa da zor yönleri vardır.Kodumuzu belki daha sonra bize lazım olur ve ya internet ortamında böyle bir koda ihtiyaçı olan olur diye paylaşıyorum.Kodu kullandığımız site Talyaambalaj.com sitedir.Demo görmek isteyenler siteyi ziyaret edebilirler.Aşağıda paylamış olduğum kodu kopyalayın tema dosyalarınız içerisinde yer alan functions.php dosyasına ekleyip dosyayı kaydedin.


// Kingofwp.com Logo Yükleme
add_action( 'woocommerce_before_add_to_cart_button', 'display_additional_product_fields', 9 );
function display_additional_product_fields(){
// Array of radio button options
$options = array( __("Ön yüze"), __("Arka yüze"), __("İki tarafa") );
// Temporary styles
?>
<style>
.upload-logo a.button { padding: .3em .75em !important; }
.upload-logo a.button.on { background-color: #CC0000 !important; color: #FFFFFF !important; }
.upload-logo p span { display:inline-block; padding:0 8px 0 4px; }
</style><?php
// Html output ?>
<div class="upload-logo">
<p><strong><?php _e( "Logonu yüklemek ister misin ?"); ?>: </strong>
<a href="#" class="button"><?php _e( "Yes" ); ?></a>
<input type="hidden" name="upload_active" value="">
</p>
<div id="hidden-inputs" style="display:none">
<p><label for="radio_field"><?php

echo __( "Logo basım yerini seçin !" ) . ' <br>';

//Kingofwp.com Logo Yükleme
foreach( $options as $key => $option ) {
$atts = $key == 0 ? 'name="side_field" checked="checked"' : 'name="side_field"'; ?>
<input type="radio" <?php echo $atts; ?> value="<?php echo $option; ?>"><span> <?php echo $option . '</span> ';
}
?>
</label></p>
<p><label for="file_field"><?php echo __("Logonuzu seçin") . ': '; ?>
<input type='file' name='image' accept='image/*'>
</label></p>
</div>
</div><?php
// Javascript (jQuery) ?>
<script type="text/javascript">
jQuery( function($){
var a = '.upload-logo', b = a+' a.button',
c = a+' #hidden-inputs', d = a+' input[type=hidden]';

$(b).click(function(e){
e.preventDefault();
if( ! $(this).hasClass('on') ) {
$(this).addClass('on');
$(c).show();
$(d).val('1');
} else {
$(this).removeClass('on');
$(c).hide('fast');
$(d).val('');
}
});
});
</script>
<?php
}

// Kingofwp.com Logo Yükleme
// Kingofwp.com Logo Yükleme
add_filter( 'woocommerce_add_cart_item_data', 'add_custom_fields_data_as_custom_cart_item_data', 10, 2 );
function add_custom_fields_data_as_custom_cart_item_data( $cart_item, $product_id ){
if( isset($_POST['upload_active']) && $_POST['upload_active'] && isset($_FILES['image']) ) {
$upload = wp_upload_bits( $_FILES['image']['name'], null, file_get_contents( $_FILES['image']['tmp_name'] ) );

$filetype = wp_check_filetype( basename( $upload['file'] ), null );

$upload_dir = wp_upload_dir();

$upl_base_url = is_ssl() ? str_replace('http://', 'https://', $upload_dir['baseurl']) : $upload_dir['baseurl'];

$base_name = basename( $upload['file'] );

$cart_item['custom_file'] = array(
'guid' => $upl_base_url .'/'. _wp_relative_upload_path( $upload['file'] ),
'file_type' => $filetype['type'],
'file_name' => $base_name,
'title' => preg_replace('/\.[^.]+$/', '', $base_name ),
'side' => isset( $_POST['side_field'] ) ? sanitize_text_field( $_POST['side_field'] ) : '',
'key' => md5( microtime().rand() ),
);
}
return $cart_item;
}

// Kingofwp.com Logo Yükleme
add_filter( 'woocommerce_get_item_data', 'display_custom_item_data', 10, 2 );
function display_custom_item_data( $cart_item_data, $cart_item ) {
if ( isset( $cart_item['custom_file']['title'] ) ){
$cart_item_data[] = array(
'name' => __( 'Logo', 'woocommerce' ),
'value' => $cart_item['custom_file']['title']
);
}

if ( isset( $cart_item['custom_file']['side'] ) ){
$cart_item_data[] = array(
'name' => __( 'Side', 'woocommerce' ),
'value' => $cart_item['custom_file']['side']
);
}
return $cart_item_data;
}

// Kingofwp.com Logo Yükleme
add_action( 'woocommerce_checkout_create_order_line_item', 'custom_field_update_order_item_meta', 20, 4 );
function custom_field_update_order_item_meta( $item, $cart_item_key, $values, $order ) {
if ( isset( $values['custom_file'] ) ){
$item->update_meta_data( __('Logo'), $values['custom_file']['title'] );
$item->update_meta_data( __('Side'), $values['custom_file']['side'] );
$item->update_meta_data( '_logo_file_data', $values['custom_file'] );
}
}

// Kingofwp.com Logo Yükleme
add_action( 'woocommerce_after_order_itemmeta', 'backend_logo_link_after_order_itemmeta', 20, 3 );
function backend_logo_link_after_order_itemmeta( $item_id, $item, $product ) {
// Only in backend for order line items (avoiding errors)
if( is_admin() && $item->is_type('line_item') && $item->get_meta('_logo_file_data') ){
$file_data = $item->get_meta( '_logo_file_data' );
echo '<p><a href="'.$file_data['guid'].'" target="_blank" class="button">'.__("Open Logo") . '</a></p>';
echo '<p>Link: <textarea type="text" class="input-text" readonly>'.$file_data['guid'].'</textarea></p>';
}
}

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

İnternet sitemizden en verimli şekilde faydalanabilmeniz ve kullanıcı deneyiminizi geliştirebilmek için Cookie kullanıyoruz. Cookie kullanılmasını tercih etmezseniz tarayıcınızın ayarlarından Cookieleri silebilir ya da engelleyebilirsiniz. Kabul Ediyorum Devamını oku

Gizlilik ve Çerez Politikası