WordPress YouTube native responsive

The native YouTube url when you embed into wordpress content is not responsive so we need to add a code to this iframe or embed

so we need to add to functions.php this code

what this code do is to search for the embed code of youtube and add to it

in order to change it with css


add_filter('embed_oembed_html', 'wrap_embed_with_div', 10, 3);

function wrap_embed_with_div($html, $url, $attr) {
        return "<div class=\"responsive-container\">".$html."</div>";
}

and this css code to your css file or theme settings css


.responsive-container {
        position: relative;
        padding-bottom: 50.25%;
        padding-top: 30px;
        height: 0;
        overflow: hidden;
        margin-bottom: 1em;
}
.responsive-container iframe {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
}


hope i helped someone in this world 🙂

Advertisements

Remove Query Strings From Static Resources

You can also remove query strings from your assets with code. Simply add the following to your WordPress theme’s functions.php file.

function _remove_script_version( $src ){ 
$parts = explode( '?', $src ); 	
return $parts[0]; 
} 
add_filter( 'script_loader_src', '_remove_script_version', 15, 1 ); 
add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );


add new tab to my account in woocommerce

i wanted to add wishlist tab to the account page in woocommerce in the the theme enfold  i was using the yith plugin yith-woocommerce-wishlist  so i need to show the title with link to the content that will show the shortcode here what i did

first add to function.php in the child theme this code


/*
* add option to edit elements via css class
*/
// add_theme_support('avia_template_builder_custom_css');

/**
* Insert the new endpoint into the My Account menu.
*
* @param array $items
* @return array
*/
function my_custom_my_account_menu_items( $items ) {
// Remove the logout menu item.
$logout = $items['customer-logout'];
unset( $items['customer-logout'] );

// Insert your custom endpoint.
$items['my-custom-endpoint'] = __( 'המעודפים שלי', 'woocommerce' );

// Insert back the logout item.
$items['customer-logout'] = $logout;

return $items;
}

add_filter( 'woocommerce_account_menu_items', 'my_custom_my_account_menu_items' );

/**
* Register new endpoint to use inside My Account page.
*
* @see https://developer.wordpress.org/reference/functions/add_rewrite_endpoint/
*/
function my_custom_endpoints() {
add_rewrite_endpoint( 'my-custom-endpoint', EP_ROOT | EP_PAGES );
}

add_action( 'init', 'my_custom_endpoints' );

/**
* Add new query var.
*
* @param array $vars
* @return array
*/
function my_custom_query_vars( $vars ) {
$vars[] = 'my-custom-endpoint';

return $vars;
}

add_filter( 'query_vars', 'my_custom_query_vars', 0 );

/**
* Endpoint HTML content.
*/
function my_custom_endpoint_content() {
echo do_shortcode('[yith_wcwl_wishlist]');
}

add_action( 'woocommerce_account_my-custom-endpoint_endpoint', 'my_custom_endpoint_content' );

 

so with the function my_custom_endpoint_content i can display what i want in the my account tab content and i did used the shortcode that comes with the plugin

fixing data-filter to support hebrew

a friend of mine bought this plugin ” Final Tiles WordPress Gallery”

https://codecanyon.net/item/final-tiles-wordpress-gallery/5189351

there is a data-filter problem to show hebrew names as it dosen’t convert it as english with the – instead of space

so to fix it we eed to go to final-tiles-gallery/lib file name “gallery-class.php”

on line 232: instead of



static public function slugify($text)
{
$text = preg_replace('~[^\\pL\d]+~u', '-', $text);
$text = trim($text, '-');
if(function_exists("iconv"))
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
$text = strtolower($text);
$text = preg_replace('~[^-\w]+~', '', $text);

if (empty($text))
{
return 'n-a';
}

return $text;
}


replace it with



static public function slugify($text)
{
$text = trim($text, '-');
$text = strtolower($text);
$text = preg_replace('/[[:space:]]+/', '-', $text);

if (empty($text))
{
return 'n-a';
}

return $text;
}


and

woocommerce show/hide flat rate based on product quantity

After long search for a good plugin couldn’t find anything so i created this snippets to help me in this subject

//Show/Hide FLATE RATE Shipping Based on Item Count for Domestic Shipment

add_filter('woocommerce_package_rates', 'show_hide_flat_rate_shipping', 10, 2);
function show_hide_flat_rate_shipping($available_shipping_methods, $package){
    $minimum_number_of_item = 10; //Give here minumum number of items to allow freeshipping
    

    $flat_rate  =   true;
    global $woocommerce;
    

    $item_count = 0;
    foreach (WC()->cart->cart_contents as $key => $item) {
        $item_count += $item['quantity'];
    }

    if( $item_count >= $minimum_number_of_item ){ //if products is greater or equal to the minumum number in my case 10 
        $flat_rate  =   false;
    }

    if($flat_rate){ //if flat_rate is true
     //do nothing show all shipping methods
    }
    else{ //if flat_rate is false
        foreach($available_shipping_methods as $shipping_method =>  $method){
            if( strpos( $shipping_method, 'flat_rate' ) !== false ) {
                unset($available_shipping_methods[$shipping_method]);
            }
        }
    }
	
    return $available_shipping_methods;
	
}

Make the WooCommerce Terms & Conditions checkbox checked by default

this code is working on woocommerce 3.x and it is test on
woocommerce 3.1.0 with WordPress 4.8

just go to function.php file on your theme and add this code


function razztech_wc_terms( $terms_is_checked ) { return true;}
add_filter( 'woocommerce_terms_is_checked', 'razztech_wc_terms', 10 );
add_filter( 'woocommerce_terms_is_checked_default', 'razztech_wc_terms', 10 );

and now it should check it by default

How To Load the Contact Form 7 Script for a Contact Page Only

Contact Form 7 loads its JavaScript and CSS files on every page and this cause load problems in the whole site specialy in the home page with PageSpeed Insights when i notice the CSS and JavaScript and there was no contact form there so what we need to fix this is to remove these js and css from any page who is not contact page that contains the contact form itself

all u need is to replace the word (contact-us) with the page name in your site

also this code need to be added to functions.php of your theme (or child theme) at the end of it

add_action( 'wp_print_scripts', 'my_deregister_javascript', 100 );
function my_deregister_javascript() {
if ( !is_page('contact-us') ) {
wp_deregister_script( 'contact-form-7' );
}
}
add_action( 'wp_print_styles', 'my_deregister_styles', 100 );
function my_deregister_styles() {
if ( !is_page('contact-us') ) {
wp_deregister_style( 'contact-form-7' );
wp_deregister_style( 'contact-form-7-rtl' );
}
}

hope i saved you 2 or 3 sec in load time 🙂

Good Luck