Friday, December 11, 2020

Shapes of Bread


 


Don't know where this is from but it showed up in my social media. If it's yours, tell me and I will credit you. 

Friday, December 4, 2020

Recipes to try

 Making my own vegan butter:

https://lovingitvegan.com/homemade-vegan-butter/


Air Fryer Sufganiyot

https://www.thespruceeats.com/air-fryer-sufganiyot-4776497


Vegan Challah - Bread Machine

1/3 of the recipe. Add 1 more egg to original recipe. Use artisanal dough settings. Take it out of machine, braid and let it rise for another hour. Diluted maple syrup wash on top. Bake at 350F for 30 minutes. 

https://www.allrecipes.com/recipe/7043/bread-machine-challah-i/

Thursday, October 29, 2020

WooCommerce: wc_attribute_label

 https://www.grahamethomson.com/2018/05/10/change-choose-an-option-in-woocommerce/

YITH: Custom CSS

 https://swiftideas.com/knowledgebase/how-to-change-the-single-product-add-to-wishlist-button-style/

Woocommerce: Only add the order item image when the product exists in the Woocommerce Order view

 https://www.thinbug.com/q/51848205


// Display the product thumbnail in order view pages
add_filter( 'woocommerce_order_item_name', 'display_product_image_in_order_item', 20, 3 );
function display_product_image_in_order_item( $item_name, $item, $is_visible ) {
    // Targeting view order pages only
    if( is_wc_endpoint_url( 'view-order' ) ) {
        // Get the WC_Product object (from order item)
        $product   = $item->get_product(); 

        // Testing if the product exist in Woocommerce <== UPDATE
        if( $product && is_object( $product ) ) {
            // Get the product thumbnail (from product object)
            $thumbnail = $product->get_image(array( 36, 36)); 
            // Avoiding empty thumbnail (updated)
            if( $product->get_image_id() > 0 )
                $item_name = '<div class="item-thumbnail">' . $thumbnail . '</div>' . $item_name;
        } else {
            // When product doesn't exist, we get the name from the order item (with no thumbnail)
            $item_name = $item->get_name();
        }
    }
    return $item_name;
}

Woocommerce: Cart Page more customisation (Future Requirements)

 https://css-tricks.com/how-to-customize-the-woocommerce-cart-page-on-a-wordpress-site/

Woocommerce: Customising My Account section

 https://blog.atomicsmash.co.uk/blog/customising-the-woocommerce-my-account-section/

Woocommerce: Custom endpoints

 https://awhitepixel.com/blog/woocommerce-my-account-add-custom-endpoints/

Sunday, October 25, 2020

Woocommerce: My Account Page Guide

 https://blog.atomicsmash.co.uk/blog/customising-the-woocommerce-my-account-section/

Woocommerce: My Account Page --> Initial login redirects to orders page like Walmart

 // Redirect initial login straight away to orders page like Walmart

// 

add_action('template_redirect', 'redirect_to_orders_from_dashboard' );

 

function redirect_to_orders_from_dashboard(){

 

if( is_account_page() && empty( WC()->query->get_current_endpoint() ) ){

wp_safe_redirect( wc_get_account_endpoint_url( 'orders' ) );

exit;

}

 

}

Woocommerce: Disable Default Shop Page

 /**

 * DISABLE DEFAULT SHOP PAGE

 */


function woocommerce_disable_shop_page() {

    global $post;

    if (is_shop()):

    global $wp_query;

    $wp_query->set_404();

    status_header(404);

    endif;

}

add_action( 'wp', 'woocommerce_disable_shop_page' );

Friday, October 23, 2020

Woocommerce: Cart Summary - which "Return to Shop" to use?

Shows nothing....

 // Hide "Return to Shop" button when all items are removed @ Cart Page

remove_action( 'woocommerce_cart_is_empty', 'wc_empty_cart_message', 10); //remove the default message

add_action( 'woocommerce_cart_is_empty', 'custom_empty_cart_message', 10); //add custom designed

function custom_empty_cart_message() {

echo "Oops your cart is lonely...";

add_action( 'woocommerce_return_to_shop', 'return_to_shop', 10); //remove return to shop button

//$_SERVER['cart'];

}



Shows both messages with custom messaging....


// Hide "Return to Shop" button when all items are removed @ Cart Page

remove_action( 'woocommerce_cart_is_empty', 'wc_empty_cart_message', 10 );

add_action( 'woocommerce_cart_is_empty', 'custom_empty_cart_message', 10 );


function custom_empty_cart_message() {

    //$html  = '<div class="col-12 offset-md-1 col-md-10"><p class="cart-empty">';

    $html .= wp_kses_post( apply_filters( 'wc_empty_cart_message', __( 'Your cart is currently empty.', 'woocommerce' ) ) );

    echo $html . '</p></div>';

}

Woocommerce: Cart Summary Page Customisation

/**

 * CART SUMMARY PAGE CUSTOMISATION

 */



// Hide Other shipping rates when free shipping is available @ Cart & Checkout Page


add_filter( 'woocommerce_package_rates', 'my_hide_shipping_when_free_is_available' );


function my_hide_shipping_when_free_is_available( $rates ) {

        $free = array();

        foreach( $rates as $rate_id => $rate ) {

          if( 'free_shipping' === $rate->method_id ) {

                $free[ $rate_id ] = $rate;

                break;

          }

        }


        return ! empty( $free ) ? $free : $rates;

}


// Changes the redirect URL for the Return To Shop button in the cart (return string)


function wc_empty_cart_redirect_url() {

return 'http://olamiie.com/product-category/shop/';

}

add_filter( 'woocommerce_return_to_shop_redirect', 'wc_empty_cart_redirect_url' );


// Hide "Return to Shop" button when all items are removed @ Cart Page

remove_action( 'woocommerce_cart_is_empty', 'wc_empty_cart_message', 10); //remove the default message

add_action( 'woocommerce_cart_is_empty', 'custom_empty_cart_message', 10); //add custom designed

function custom_empty_cart_message() {

echo "Oops your cart is lonely...";

add_action( 'woocommerce_return_to_shop', 'return_to_shop', 10); //remove return to shop button

//$_SERVER['cart'];

}


Woocommerce: My Account Page Customisation

/**

 * My ACCOUNT PAGE CUSTOMISATION

 */


//Merge Two "My Account" Tabs @ WooCommerce Account


// Remove Downloads Tab (downloads in this case)

 

add_filter( 'woocommerce_account_menu_items', 'remove_downloads_my_account', 999 );

  

function remove_downloads_my_account( $items ) {

unset($items['downloads']);

return $items;

}



// 1. First, hide the tab that needs to be merged/moved (edit-address in this case)

 

add_filter( 'woocommerce_account_menu_items', 'remove_address_my_account', 999 );

  

function remove_address_my_account( $items ) {

unset($items['edit-address']);

return $items;

}

 


// 1. First, hide the tab that needs to be merged/moved (payment-methods in this case)

 

add_filter( 'woocommerce_account_menu_items', 'remove_payment_my_account', 999 );

  

function remove_payment_my_account( $items ) {

unset($items['payment-methods']);

return $items;

}


// 2. Second, print the ex tab content into an existing tab (edit-account in this case)

 

add_action( 'woocommerce_account_edit-account_endpoint', 'woocommerce_account_edit_address' );

//add_action( 'woocommerce_account_edit-account_endpoint', 'woocommerce_account_payment_methods' );


/**

  * Register new endpoints to use inside My Account page.

  */


 add_action( 'init', 'my_account_new_endpoints' );


 function my_account_new_endpoints() {

  add_rewrite_endpoint( 'warranty-requests', EP_ROOT | EP_PAGES );

 }


/**

  * Get new endpoint content

  */


  // Warranty

 add_action( 'woocommerce_warranty_requests_endpoint', 'warranty_requests_endpoint_content' );

 function warranty_requests_endpoint_content() {

     get_template_part('warranty-requests');

 }


// Rename, re-order my account menu items

function reorder_my_account_menu() {

    $neworder = array(

        'dashboard'          => __( 'Dashboard', 'woocommerce' ),

        'orders'             => __( 'Orders', 'woocommerce' ),

        'wishlist'      => __( 'Wishlist', 'woocommerce' ),

        //‘edit-address'       => __( 'Addresses', 'woocommerce' ),

        'edit-account'       => __( 'Account Details', 'woocommerce' ),

        'warranty-requests'       => __( 'Limited Warranty', 'woocommerce' ),

       'customer-logout'    => __( 'Logout', 'woocommerce' ),

    );

    return $neworder;

}

add_filter ( 'woocommerce_account_menu_items', 'reorder_my_account_menu' );



// Display the product thumbnail in order view pages like Uniqlo

add_filter( 'woocommerce_order_item_name', 'display_product_image_in_order_item', 20, 3 );

function display_product_image_in_order_item( $item_name, $item, $is_visible ) {

    // Targeting view order pages only

    if( is_wc_endpoint_url( 'view-order' ) ) {

        // Get the WC_Product object (from order item)

        $product   = $item->get_product(); 


        // Testing if the product exist in Woocommerce <== UPDATE

        if( $product && is_object( $product ) ) {

            // Get the product thumbnail (from product object)

            $thumbnail = $product->get_image(array( 36, 36)); 

            // Avoiding empty thumbnail (updated)

            if( $product->get_image_id() > 0 )

                $item_name = '<div class="item-thumbnail">' . $thumbnail . '</div>' . $item_name;

        } else {

            // When product doesn't exist, we get the name from the order item (with no thumbnail)

            $item_name = $item->get_name();

        }

    }

    return $item_name;

}


Woocommerce: Checkout Page Customisation

 /**

 * CHECKOUT PAGE CUSTOMISATION

 */



// Remove Coupon form at checkout page

remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );



// Show product thumbnail on checkout page.

// @see {templates|woocommerce}/checkout/review-order.php


add_filter( 'woocommerce_cart_item_name', 'jfs_checkout_show_product_thumbnail', 10, 2 );

function jfs_checkout_show_product_thumbnail( $name, $cart_item ) {

    if ( ! is_checkout() ) return $name;

    $thumbnail = '<span class="product-name__thumbnail" style="float: left; padding-right: 15px">' . get_the_post_thumbnail( $cart_item['product_id'], array( 60, 120 ) ) . '</span>';

    return $thumbnail . '<span class="product-name__text">' . $name . '</span>';

}


Woocommerce: Temporarily Disable Shop Page - While on Vacation

 https://passwordprotectwp.com/disable-woocommerce-shop-page/


/**
 * @snippet       WooCommerce Holiday/Pause Mode
 * @how-to        Get CustomizeWoo.com FREE
 * @sourcecode    https://businessbloomer.com/?p=20862
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 3.5.1
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
// Trigger Holiday Mode
add_action ('init', 'bbloomer_woocommerce_holiday_mode');


// Disable Cart, Checkout, Add Cart
function bbloomer_woocommerce_holiday_mode() {
   remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
   remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
   remove_action( 'woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20 );
   remove_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 );
   add_action( 'woocommerce_before_main_content', 'bbloomer_wc_shop_disabled', 5 );
   add_action( 'woocommerce_before_cart', 'bbloomer_wc_shop_disabled', 5 );
   add_action( 'woocommerce_before_checkout_form', 'bbloomer_wc_shop_disabled', 5 );
}
// Show Holiday Notice
function bbloomer_wc_shop_disabled() {
        wc_print_notice( 'Our Online Shop is Closed Today :)', 'error');

}

Thursday, October 22, 2020

Woocommerce: My Additional CSS

  /** MY ACCOUNT PAGE --> ORDERS BUTTONS **/ a.view { margin: 3px; } /*Remove Package tracking buttons*/ a.woocommerce-button.button.ast_track { display: none; } /*Remove Warranty Request buttons*/ a.woocommerce-button.button.warranty_request { display: none; } /** MY ACCOUNT PAGE --> Individual Order **/ /*Underline tracking number for clicking to see the tracking information page */ td.tracking-number { text-decoration: underline !important; } /** WISHLIST HEART ICON STYLING **/ i.fa-heart-o { color: darksalmon; /*font-size: 0.3em;*/ } i.fa-heart { color: darksalmon; /*font-size: 0.3em;*/ } /* Hide the old red "x" & hover */ .remove.remove_from_wishlist { visibility:hidden!important; /*hide everything*/ width:auto!important; /*make sure to have the need width for "remove" */ } /* Add a Fontawesome icon instead for "remove from cart" icon with garbage icon */ .remove.remove_from_wishlist:before { visibility:visible; font-family: FontAwesome; font-size: 17px; color: dimgray; content: "\f1f8"; float: left; text-indent: 0; } } /** SINGLE PRODUCT PAGE **/ /** Reviews Styling **/ h2.woocommerce-Reviews-title{ font-family: Poppins; font-weight: 200; font-size: 12px; line-height: 1.5; } /** Hide QTY text box on Single Product Page ONLY**/ .single-product .quantity input[type="number"] { display: none !important; } /** CART PAGE STYLING FOR MOBILE **/ /** MyStyle: Show thumbnail in cart larger than default 32px **/ .woocommerce-cart table.cart img { width: auto; min-width: 32px; max-width: 100px; } @media(max-width:768px) { /** Show thumbnail row in cart on mobile **/ .woocommerce-page table.cart .product-thumbnail { display: inline-block !important; } /** hide colon above thumbnail for mobile **/ .woocommerce-page table.cart .product-thumbnail:before { display: none; } } /** CART PAGE STYLING **/ /**Remove all internal borders**/ /*.woocommerce-cart .woocommerce table.shop_table{ border: 1px solid #54595f;}*/ .woocommerce-cart table.shop_table thead{ border: none; color: none; text-align: right; } .woocommerce-cart table.shop_table td{ border: none; } .woocommerce-cart .cart-collaterals .cart_totals tr th{ border: none; } .woocommerce-cart .cart-collaterals .cart_totals tr td{ border: none; } /* Hide the old red "x" & hover */ .woocommerce-cart a.remove { visibility:hidden!important; /*hide everything*/ width:auto!important; /*make sure to have the need width for "remove" */ } /* Add a Fontawesome icon instead for "remove from cart" icon with garbage icon */ .woocommerce-cart a.remove:before { visibility:visible; font-family: FontAwesome; font-size: 17px; color: dimgray; content: "\f1f8"; float: left; text-indent: 0; } } /*Update cart button*/ .woocommerce-cart table.cart td.actions .button, .woocommerce-checkout table.cart td.actions .button, #add_payment_method table.cart td.actions .button { float: right; margin: 30px; } /** CHECKOUT PAGE STYLING **/ /**Remove all internal borders**/ woocommerce #order_review table.shop_table th{ border: none; --text-align: left; } .woocommerce #order_review table.shop_table td{ border: none; --text-align: left; } .woocommerce #order_review table.shop_table th{ border: none; --text-align: left; } /**Always show checkout coupon, reduce clicking**/ .checkout_coupon { display: block !important; } .woocommerce-info { display:none; }

Woocommerce: Single Product Page Customisation

/**

 * SINGLE PRODUCT PAGE CUSTOMISATION

 */



// Remove Categories @ Single Products 

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );



// Hide "in stock" @ Single Products 

function my_wc_hide_in_stock_message( $html, $text, $product ) {

$availability = $product->get_availability();


if ( isset( $availability['class'] ) && 'in-stock' === $availability['class'] ) {

return '';

}


return $html;

}


add_filter( 'woocommerce_stock_html', 'my_wc_hide_in_stock_message', 10, 3 );



// Hide "Additional Information tab" @ Single Products 


add_filter( 'woocommerce_product_tabs', 'bbloomer_remove_product_tabs', 9999 );

  

function bbloomer_remove_product_tabs( $tabs ) {

    unset( $tabs['additional_information'] ); 

    return $tabs;

}


// Hide  "xx product has been added to your cart" @ Single Product Page

add_filter( 'wc_add_to_cart_message_html', '__return_false' );


// Change location of price to above "Add to Cart" button

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );

add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 20 );

Woocommerce: My Account Page Customisation

 /**

 * My ACCOUNT PAGE CUSTOMISATION

 */


/**

 * @snippet       Merge Two "My Account" Tabs @ WooCommerce Account

 * @how-to        Get CustomizeWoo.com FREE

 * @source        https://businessbloomer.com/?p=73601

 * @author        Rodolfo Melogli

 * @compatible    Woo 3.5.3

 * @donate $9     https://businessbloomer.com/bloomer-armada/

 */


// -------------------------------

// Remove Downloads Tab (downloads in this case)

 

add_filter( 'woocommerce_account_menu_items', 'remove_downloads_my_account', 999 );

  

function remove_downloads_my_account( $items ) {

unset($items['downloads']);

return $items;

}


// -------------------------------

// 1. First, hide the tab that needs to be merged/moved (edit-address in this case)

 

add_filter( 'woocommerce_account_menu_items', 'remove_address_my_account', 999 );

  

function remove_address_my_account( $items ) {

unset($items['edit-address']);

return $items;

}

 

// -------------------------------

// 1. First, hide the tab that needs to be merged/moved (payment-methods in this case)

 

add_filter( 'woocommerce_account_menu_items', 'remove_payment_my_account', 999 );

  

function remove_payment_my_account( $items ) {

unset($items['payment-methods']);

return $items;

}

// -------------------------------

// 2. Second, print the ex tab content into an existing tab (edit-account in this case)

 

add_action( 'woocommerce_account_edit-account_endpoint', 'woocommerce_account_edit_address' );

//add_action( 'woocommerce_account_edit-account_endpoint', 'woocommerce_account_payment_methods' );



// -------------------------------

// Redirect initial login straight away to orders page like Walmart

// 

add_action('template_redirect', 'redirect_to_orders_from_dashboard' );

 

function redirect_to_orders_from_dashboard(){

 

if( is_account_page() && empty( WC()->query->get_current_endpoint() ) ){

wp_safe_redirect( wc_get_account_endpoint_url( 'orders' ) );

exit;

}

 

}


// Display the product thumbnail in order view pages

add_filter( 'woocommerce_order_item_name', 'display_product_image_in_order_item', 20, 3 );

function display_product_image_in_order_item( $item_name, $item, $is_visible ) {

    // Targeting view order pages only

    if( is_wc_endpoint_url( 'view-order' ) ) {

        // Get the WC_Product object (from order item)

        $product   = $item->get_product(); 


        // Testing if the product exist in Woocommerce <== UPDATE

        if( $product && is_object( $product ) ) {

            // Get the product thumbnail (from product object)

            $thumbnail = $product->get_image(array( 36, 36)); 

            // Avoiding empty thumbnail (updated)

            if( $product->get_image_id() > 0 )

                $item_name = '<div class="item-thumbnail">' . $thumbnail . '</div>' . $item_name;

        } else {

            // When product doesn't exist, we get the name from the order item (with no thumbnail)

            $item_name = $item->get_name();

        }

    }

    return $item_name;

}