wPHP - wordpress, woocommerce - kodowanie bez wtyczek
WordPress - zakoduj to sam w PHP

Produkt dostępny od dnia

Grzegorz Chodacki26 marca 2021dla admina, layout, woocommerce

Sklep oferuje produkty specjalistyczne, których produkcja może odwlec się w czasie. W związku z tym przyda się pole z datą określające kiedy dokładnie dany produkt będzie dostępny na sklepie. Woocommerce oferuje możliwość złożenia zamówienia przy zerowym stanie magazynowym, tzw. backorders. No ale nie informuje klienta konkretnie jak długo ma na ten produkt czekać. Dodamy więc takie pole.

function poinformuj_klienta_kiedy_dostepny_porodukt() {
 echo '<p class="form_field data_field">';
 woocommerce_wp_text_input( array(
 'id' => 'data_dostepnosci_produktu',
 'label' => __('Data dostępności produktu', 'woocommerce'),
 'type' => 'date',
 'required' => false,
 'style' => 'width: 50%'
 )
 );
 echo '</p>';
}
add_action('woocommerce_product_options_stock_fields', 'poinformuj_klienta_kiedy_dostepny_porodukt' );

function zapis_data_dostepnosci_produktu( $id, $post) {
 update_post_meta( $id, 'data_dostepnosci_produktu', $_POST['data_dostepnosci_produktu']);
}
add_action( 'woocommerce_process_product_meta', 'zapis_data_dostepnosci_produktu', 10, 2 );

Teraz wystarczy pokazać wybraną datę przy produkcie, który ma braki magazynowe. Wykorzystamy do tego filtr woocommerce_get_availability

function change_specific_availability_text( $availability ) {
 global $product;
 if ($availability[ 'class' ] == 'available-on-backorder') {
 $data = get_post_meta($product->get_id(),'data_dostepnosci_produktu');
 $availability[ 'availability' ] = 'Produkt dostępny od: '.$data[0];
 }
 return $availability;
}
add_filter( 'woocommerce_get_availability', 'change_specific_availability_text', 20, 1 );

Przeliczanie waluty w koszyku

Grzegorz Chodacki26 marca 2021layout

Dość ciekawe zagadnienie. Klient zażyczył sobie, aby w koszyku było pokazane przeliczenie wartości zamówienia na inne waluty. Wykorzystaliśmy w tym przypadku wcześniej stworzony kod pobierający aktualne kursy walut ze strony NBP poprzez API.

$waluty = array (
 'EURO' => 'eur', 
 'USD' => 'usd', 
 'GBP' => 'gbp'
);

add_action('woocommerce_cart_totals_after_order_total', 
 function() use ( $waluty ) { 
 przeliczenie_waluty( $waluty ); 
 }
);

function przeliczenie_waluty( $waluty ) {
 
 $amount = WC()->cart->total;
 echo '<table>';
 foreach($waluty as $key => $value) {

 $dane = file_get_contents('http://api.nbp.pl/api/exchangerates/rates/a/'. $value .'/?format=json');
 $json = json_decode($dane);
 $mid_kurs = $json->rates[0]->mid;

 $price = $amount / $mid_kurs;
 echo 
 '<tr> <th>Suma w ' .$key. '</th> <td><strong><span>' . round($price, 2) . '</span><bdi> '. $key.'</bdi></strong></td> </tr>';
 }
 echo '</table>';
}

Ograniczona rola sprzedawcy w woocommerce

Grzegorz Chodacki26 marca 2021dla admina, woocommerce

Zadanie na dzisiaj. Jak zrobić aby pracownik obsługujący sklep nie miał wglądu w zamówienia. Może jedynie dodawać i edytować produkty. Po prostu stworzymy nową rolę – sprzedawca.

$rola = add_role( 'Sprzedawca', __('Sprzedawca'), array(
 'read' => true, 
 'read_product' => true,
 'read_shop_coupon' => true,

 'edit_posts' => true,
 'edit_post' => true,
 
 'manage_categories' => true, 
 'edit_themes' => false, 
 'install_plugins' => false, 

 'assign_product_terms' => true,
 'edit_product' => true,
 'edit_product_terms' => true,
 'edit_products' => true,
 'edit_others_products' => true,
 'edit_published_products' => true,
 'publish_products' => true,
 'delete_product' => true,
 'delete_product_terms' => true,
 'delete_products' => true,
 'delete_published_products' => true,
 'delete_others_products' => true,
 'manage_product_terms' => true,

 'publish_shop_coupons' => true,
 'assign_shop_coupon_terms' => true,
 'edit_shop_coupon' => true,
 'edit_shop_coupon_terms' => true,
 'edit_shop_coupons' => true,
 'edit_published_shop_coupons' => true,
 'manage_shop_coupon_terms' => true,
 'delete_published_shop_coupons' => true,
 'delete_others_shop_coupons' => true,

 'upload_files' => true

) );
kupony

Użyte kupony na liście zamówień w adminie

Grzegorz Chodacki4 marca 2021dla admina, woocommerce manage_edit-shop_order_columns

Dla sklepu internetowego, który sporą część swojej polityki sprzedaży opiera na kuponach rabatowych, pojawia się pewna niedogodność. Otóż użyty kupon można zobaczyć dopiero wchodząc w edycję zamówienia. Nawet są jakieś wtyczki pozwalające wyświetlić kupon na szybkim podglądzie zamówienia. Ale wydawanie 100$ na coś co i tak nie spełnia moich oczekiwań wydaje się być głupie. Lepiej poświęcić kilkanaście minut i napisać samemu kod 🙂
Użyjemy do tego filtra ‘manage_edit-shop_order_columns.

//dodamy nową kolumnę w liście zamówień woocommerce
add_filter( 'manage_edit-shop_order_columns', 'gc_new_kupony_column' );

function gc_new_kupony_column( $columns ) {
 $reordered_columns = array();
 foreach( $columns as $key => $column){
 $reordered_columns[$key] = $column;
 if( $key == 'order_total' ){
 $reordered_columns['kupony_column'] = 'Kupony';
 }
 }
 return $reordered_columns;
}

//teraz w nowo utworzonej kolumnie wyświetlimy użyty kupon
add_action( 'manage_shop_order_posts_custom_column' , 'custom_orders_list_column_content', 20, 2 );
function custom_orders_list_column_content( $column, $post_id )
{
 switch ( $column )
 {
 case 'kupony_column' :
 
 $order = wc_get_order( $post_id );
 $coupons = $order->get_used_coupons();
 //w naszym sklepie z założenia nie można łączyć kuponów więc wiem, że będzie tylko jeden
 echo $coupons[0];
 break;
 }
}

I tyle. Teraz na liście zamówień pojawia się kolumna, w której wyświetlamy kod użytego kuponu.

Zwiększ koszt wysyłki co kilka sztuk

Grzegorz Chodacki2 marca 2021woocommerce

Dzisiaj kolejne nietypowe zlecenie od klienta. Oczywiście jak to zwykle bywa kwestia dotyczy kilku produktów z kilkudziesięciu. I prawdopodobnie takie zamówienie wpadnie raz na rok, ale to przecież bardzo ważne. Otóż koszt wysyłek od 1 do 6 produktów ma wynosić 20 zł. I ma zwiększać się o kolejne 20 zł po dodaniu kolejnych 1 do 6 sztuk. Czyli dla 7-12 sztuk w koszyku ma być już 40 zł.

Oczywiście nie ma najmniejszego problemu gdy cena wysyłki jest ustalona dla jednego produktu. Wtedy w płaskiej stawce stosujemy cena*[qty] i po zbawie.

Tutaj sytuacja jest nieco bardziej skomplikowana i posłużymy się filtrem woocommerce_shipping_rate_cost.

<?php 
function gc_mnozymy_koszt_wysylki( $cost, $method ) {


 // zmian dokonujemy dla wybranych metod wysyłki pobierając ich instance_id
 if ( in_array( $method->get_instance_id(), array( 22, 23 ) ) && WC()->cart ) {

 $cart_item_count = WC()->cart->get_cart_contents_count();

 // dzielimy liczbę produktów w koszyku przez 6 
 // a następnie zaokrąglamy do liczby całkowitej co wygeneruje nam odpowiedni mnożnik 1, 2, 3 
 if ( $cart_item_count > 1 ) {
 $cost = round( $cart_item_count / 6 ) * $cost;
 }
 }
 return $cost;
}
add_filter( 'woocommerce_shipping_rate_cost', 'gc_mnozymy_koszt_wysylki', 10, 2 );
?>

Obsługa plików WebP w WordPress

Grzegorz Chodacki14 grudnia 2020optymalizacja

Taki temat na dzisiaj. Format grafiki WebP zyskuje szybko popularność, głównie za sprawą zaleceń w wynikach PageSpeed. Jest wiele wtyczek, które dodają w WordpPress możliwość obsługi grafiki w formacie WebP. Niestety większość to spore rozwiązania, które zapewniają konwersję wgranych już plików jpg i png, albo zmianę ich podczas dodawania.

A ja chcę jedynie umożliwić wysyłanie i wyświetlanie zdjęć w formacie WebP. To dość proste. WordPress nie obsługuje natywnie przeglądania i przesyłania plików WebP, ale wyjaśnię ci, jak możesz to zrobić w kilku prostych krokach. Podobnie jak przy innych formatach, np. svg wykorzystamy filtr mime_types. Oczywicie odpowiedni kod dodajemy w pliku functions.php.

function webp_upload_mimes($existing_mimes) {
 $existing_mimes['webp'] = 'image/webp';
 return $existing_mimes;
}
add_filter('mime_types', 'webp_upload_mimes');

Jeśli chcesz zobaczyć podgląd obrazu (miniatury) po przejściu do Media, musisz dodać poniższy kod poniżej w tym samym pliku functions.php.

function webp_is_displayable($result, $path) {
 if ($result === false) {
 $displayable_image_types = array( IMAGETYPE_WEBP );
 $info = @getimagesize( $path );

 if (empty($info)) {
 $result = false;
 } elseif (!in_array($info[2], $displayable_image_types)) {
 $result = false;
 } else {
 $result = true;
 }
 }
 return $result;
}
add_filter('file_is_displayable_image', 'webp_is_displayable', 10, 2);
wordpress zmiana url

Ustawienia bezpośrednich odnośników

Grzegorz Chodacki5 grudnia 2020dla admina

Taka oto sytuacja, że klient zostawił sobie w wordpress domyślne adresy url wpisów blogowych w postaci /2020/12/05/przykladowy-wpis/. Oczywiście można jak kto lubi i teorii jest wiele co do wyglądu adresu podstrony i jego wpływu na seo, ja jednak preferuję prosty url w postaci wphp.pl/przykladowy-wpis/.

More

Ukrywanie zakładek na stronie produktu

Grzegorz Chodacki9 lipca 2020woocommerce

Często spotykam się z tym, że na stronie produktu zakładki z dodatkowymi informacjami i komentarzami są niepotrzebne. Pokażę jak możemy je ukryć w prosty sposób.

More
woocommerce product gutenberg

Guttenberg w opisie produktu Woocommerce

Grzegorz Chodacki9 lipca 2020woocommerce

Taka naszła nas dzisiaj idea aby nieco uatrakcyjnić wygląd opisu produktu na sklepie woocommerce wprowadzając choćby podział na 2 kolumny. Po lewej stronie opis a po prawej skład produktu, zalecenia stosowania, najważniejsze cechy. Pierwsza myśl to oczywiście modyfikacja i nadpisanie templatki woocommerce. Potem już poleciałem z budowaniem nowych zakładek do produktu i dodawaniem custom fields. I nagle stop! Po jaką cholerę? Nowy wordpress daje nam przecież doskonałe możliwości dzięki edytorowi Gutenberg. Tym bardziej, że za 2 miesiące ma wejść wersja 5.5 wordpressa z jeszcze bardziej rozbudowanymi właściwościami, obsługą dodatkowych bloków i kontrolą rozmiaru za pomocą właściwości rem,vh, vw.

More

Załącznik do maila z potwierdzeniem zamówienia w Woocommerce

Grzegorz Chodacki26 marca 2020dla admina, woocommerce

Taka szybka sytuacja. Kolega ze Słowacji bardzo skrupulatnie dopracowuje sklep i wpada na różne ciekawe pomysł. Jednym z nich jest umieszczenie w mailu potwierdzającym zamówienie załącznika w pdf z regulaminem sklepu.

Można zainstalować oczywiście wtyczkę Email Attachments od Woocommerce. Ale wtyczki są dla cieniasów. Napiszemy kod.

More
‹ 1 2 3 4›»

Ostatnie wpisy

  • Jak wyłączyć odzyskiwanie hasła
  • Pobieranie aktualnego kursu walut przez API NBP
  • Poczta interia – nie dochodzą maile
  • Wyszukiwanie postów tylko po tytułach
  • Related product – produkty podobne w woocommerce

Najnowsze komentarze

    Archiwa

    • wrzesień 2022
    • lipiec 2022
    • kwiecień 2022
    • marzec 2022
    • październik 2021
    • wrzesień 2021
    • kwiecień 2021
    • marzec 2021
    • grudzień 2020
    • lipiec 2020
    • marzec 2020
    • luty 2020
    • styczeń 2020
    • maj 2019
    • luty 2019
    • listopad 2018
    • sierpień 2018
    • czerwiec 2018
    • maj 2018
    • marzec 2018
    • luty 2018
    • styczeń 2018

    Kategorie

    • dla admina
    • layout
    • optymalizacja
    • woocommerce

    Meta

    • Zaloguj się
    • Kanał wpisów
    • Kanał komentarzy
    • WordPress.org
    Strony na Wordpress - uKONTENTowani.pl
    TO NIE JEST STRONA DLA INSTALATORÓW WTYCZEK