Compare email with confirmation in contact form 7

$( document ).ready( function () {
$(‘.wpcf7-submit’).click(function () {
if ($(‘input[name=”email-626″]’).val() !== $(‘input[name=”email-465″]’).val()) {
$(‘input[name=”email-626″]’).addClass(‘wpcf7-not-valid’);
return false;
} else {
return true;
}
});
});

Add divs, classes for sub menu and main menu in wordpress

<?php
$defaults = array(
‘theme_location’ => ”,
‘menu’ => ‘Header Menu’,
‘menu_id’ => ”,
‘echo’ => true,
‘fallback_cb’ => ”,
‘items_wrap’ => ‘<ul class=”list-inline”>%3$s</ul>’,
‘depth’ => 0,
‘walker’ => new inner_sub_menu
);
wp_nav_menu( $defaults );
?>
<?php
class inner_sub_menu extends Walker_Nav_Menu {

// add classes to ul sub-menus
function start_lvl( &$output, $depth ) {
// depth dependent classes
$indent = ( $depth > 0 ? str_repeat( “\t”, $depth ) : ” ); // code indent
$display_depth = ( $depth + 1); // because it counts the first submenu as 0
$classes = array(‘sub-menu list-unstyled’);
$class_names = implode( ‘ ‘, $classes );
// build html
$output .= “\n” . $indent . ‘<div class=”dropdown-menu”><ul class=”‘ . $class_names . ‘”>’ . “\n”;
}
// add main/sub classes to li’s and links
function start_el( &$output, $item, $depth, $args ) {
global $wp_query;
$indent = ( $depth > 0 ? str_repeat( “\t”, $depth ) : ” ); // code indent

// depth dependent classes
$depth_classes = array(
( $depth == 0 ? ‘main-menu-item’ : ‘sub-menu-item’ ),
( $depth >=2 ? ‘sub-sub-menu-item’ : ” ),
( $depth % 2 ? ‘menu-item-odd’ : ‘menu-item-even’ ),
‘menu-item-depth-‘ . $depth
);
$depth_class_names = esc_attr( implode( ‘ ‘, $depth_classes ) );

// passed classes
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$class_names = esc_attr( implode( ‘ ‘, apply_filters( ‘nav_menu_css_class’, array_filter( $classes ), $item ) ) );

// build html
$output .= $indent . ‘<li id=”nav-menu-item-‘. $item->ID . ‘” class=”‘ . $depth_class_names . ‘ ‘ . $class_names . ‘”>’;

// link attributes
$attributes = ! empty( $item->attr_title ) ? ‘ title=”‘ . esc_attr( $item->attr_title ) .'”‘ : ”;
$attributes .= ! empty( $item->target ) ? ‘ target=”‘ . esc_attr( $item->target ) .'”‘ : ”;
$attributes .= ! empty( $item->xfn ) ? ‘ rel=”‘ . esc_attr( $item->xfn ) .'”‘ : ”;
$attributes .= ! empty( $item->url ) ? ‘ href=”‘ . esc_attr( $item->url ) .'”‘ : ”;
$attributes .= ‘ class=”menu-link ‘ . ( $depth > 0 ? ‘sub-menu-link’ : ‘main-menu-link’ ) . ‘”‘;

$item_output = sprintf( ‘%1$s<a%2$s>%3$s%4$s%5$s</a>%6$s’,
$args->before,
$attributes,
$args->link_before,
apply_filters( ‘the_title’, $item->title, $item->ID ),
$args->link_after,
$args->after
);
$output .= apply_filters( ‘walker_nav_menu_start_el’, $item_output, $item, $depth, $args );
}
}
?>

Get products from multiple categories in wordpress woocommerce

Please find below code to get products from multiple categories in wordpress woo-commerce

$args = array( ‘post_type’ => ‘product’,
‘tax_query’ => array(
‘relation’ => ‘AND’,
array(
‘taxonomy’ => ‘product_cat’,
‘field’ => ‘slug’,
‘terms’ => $slug1
),
array(
‘taxonomy’ => ‘product_cat’,
‘field’ => ‘slug’,
‘terms’ => $slug2
)
),
‘orderby’ =>’date’,’order’ => ‘ASC’ );

Enabling Shortcodes in WordPress Text Widget

By default, any text entered into the text widget goes through WordPress filters which doesn’t allow shortcodes to be executed.

Enabling Shortcodes in WordPress Text Widget

Simply add this code to your theme’s functions.php file or a site-specific plugin.
// Enable shortcodes in text widgets
add_filter(‘widget_text’,’do_shortcode’);

Get variation attribute based on product ID in WooCommerce

/* Get variation attribute based on product ID */
$product = new WC_Product_Variable( $product_id );
$variations = $product->get_available_variations();
$var_data = [];
foreach ($variations as $variation) {
if($variation[‘variation_id’] == $variation_id){
$var_data[] = $variation[‘attributes’];
}
}

/*Get attributes from loop*/
foreach($var_data[0] as $attrName => $var_name) {
echo $var_name;
}