12 fragmentos y consejos útiles de Woocommerce

Aquí hay 12 fragmentos y trucos útiles de Woocommerce que utilizo en la mayoría de mis sitios. Entonces, me gustaría compartirlos con ustedes. Si desea usarlos, péguelos en el archivo function.php de su tema o, mejor aún, use Fragmentos de código conectar. Si lo hace, no perderá los cambios la próxima vez que cambie el tema.

¿Cómo ocultar la categoría de producto sin clasificar de la página y el widget de la tienda Woocommerce?

Este código a continuación oculta la categoría Sin categoría de la página de la tienda

// Hide Uncategorized product category from shop page
add_filter( 'woocommerce_product_subcategories_args', 'hide_uncategorized_cat_from_shop_page' );
function hide_uncategorized_cat_from_shop_page( $args ) {
  $args['exclude'] = get_option( 'default_product_cat' );
  return $args;
}

Este código a continuación oculta la categoría Sin categoría en el widget de la barra lateral

// Hide Uncategorized product category from widget
add_filter( 'woocommerce_product_categories_widget_args', 'hide_uncategorized_cat_from_widget' );

function hide_uncategorized_cat_from_widget( $args ) {
  $args['exclude'] = get_option( 'default_product_cat' );
  return $args;
}

¿Cómo ocultar el número de productos de categoría en los archivos de productos?

add_filter( 'woocommerce_subcategory_count_html', '__return_false' );

¿Cómo eliminar la pestaña Reseñas en Woocommerce?

Ver otro video que hice en cómo crear, renombrar, eliminar y reorganizar pestañas de productos personalizados.

add_filter( 'woocommerce_product_tabs', 'remove_review_tab', 98 );
function remove_review_tab( $tabs ) {
    unset( $tabs['reviews'] ); // Remove the reviews tab
    return $tabs;
}

¿Cómo activar el modo de catálogo de Woocommerce sin un complemento adicional?

add_filter( 'woocommerce_is_purchasable', '__return_false'); // DISABLING PURCHASE FUNCTIONALITY AND REMOVING ADD TO CART BUTTON FROM NORMAL PRODUCTS

remove_action('woocommerce_single_variation', 'woocommerce_single_variation', 10); // REMOVING PRICE FROM VARIATIONS

remove_action('woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20); // REMOVING ADD TO CART BUTTON FROM VARIATIONS

Truco de bonificación: ¿Cómo agregar un formulario de solicitud en la página de un solo producto de Woocommerce?

Además, si desea activar un modo de catálogo y mostrar un formulario de solicitud de producto en una sola página de producto, utilice este código en su lugar.

add_filter( 'woocommerce_is_purchasable', '__return_false'); // DISABLING PURCHASE FUNCTIONALITY AND REMOVING ADD TO CART BUTTON FROM NORMAL PRODUCTS

remove_action('woocommerce_single_variation', 'woocommerce_single_variation', 10); // REMOVING PRICE FROM VARIATIONS

remove_action('woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20); // REMOVING ADD TO CART BUTTON FROM VARIATIONS

// Add an enquiry form on Woocommerce single product page
add_action( 'woocommerce_single_product_summary', 'single_product_message', 20 );
 
function single_product_message() {
    echo '<p class="woocommerce-message">Send us an enquiry </p>';
	echo do_shortcode('[fluentform id="1"]'); // Your contact form shortcode goes here. 
}

Si está interesado, mire este video en cómo agregar un formulario de solicitud en la página del producto.

[enlazatom_show_links]

¿Cómo muestro los últimos productos agotados en las páginas de archivo de productos de Woocommerce?

add_action( 'woocommerce_product_query', 'out_of_stock_last', 999 );
 
function out_of_stock_last( $query ) {
    if ( is_admin() ) return;
    $query->set( 'meta_key', '_stock_status' );
    $query->set( 'orderby', array( 'meta_value' => 'ASC' ) );
}

¿Cómo visualizo los productos destacados y / o el formulario de contacto en la página Productos no encontrados?

// You can use all Woocommerce shortcodes here below. See available shortcodes here https://docs.woocommerce.com/document/woocommerce-shortcodes/

add_action( 'woocommerce_no_products_found', 'featured_products_on_not_found', 20 );
function featured_products_on_not_found() {
	echo '<h4>' . __( 'No products were found matching your selection. Although... You may be interested in these products', 'domain' ) . '</h4>';
	echo do_shortcode( '[featured_products per_page="4"]' ); // Here goes your shortcode
	echo '<h4>' . __( 'Can’t find your product? Send us an enquiry', 'domain' ) . '</h4>';
	echo do_shortcode( '[fluentform id="1"]' ); // Here goes your shortcode
}

¿Cómo eliminar Woocommerce «Enviar a una dirección diferente»? ¿selección?

add_filter( 'woocommerce_cart_needs_shipping_address', '__return_false');

¿Cómo eliminar los campos de pago de Woocommerce sin complemento?

A continuación se muestran todos los campos que puede eliminar.

// Remove checkout fields
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

function custom_override_checkout_fields( $fields ) {
 // remove billing fields
    unset($fields['billing']['billing_first_name']); // Billing First name
    unset($fields['billing']['billing_last_name']); // Billing Last name
    unset($fields['billing']['billing_company']); // Billing company
    unset($fields['billing']['billing_address_1']); // Billing Address 1
    unset($fields['billing']['billing_address_2']); // Billing Address 2
    unset($fields['billing']['billing_city']); // Billing city
    unset($fields['billing']['billing_postcode']); // Billing postcode
    unset($fields['billing']['billing_country']); // Billing country
    unset($fields['billing']['billing_state']); // Billing state
    unset($fields['billing']['billing_phone']); // Billing phone
    unset($fields['billing']['billing_email']); // Billing email
   
    // remove shipping fields 
    unset($fields['shipping']['shipping_first_name']); // Shipping first name  
    unset($fields['shipping']['shipping_last_name']); // Shipping last name  
    unset($fields['shipping']['shipping_company']); // Shipping company  
    unset($fields['shipping']['shipping_address_1']); // Shipping address 1
    unset($fields['shipping']['shipping_address_2']); // Shipping address 2
    unset($fields['shipping']['shipping_city']); // Shipping city 
    unset($fields['shipping']['shipping_postcode']); // Shipping postcode
    unset($fields['shipping']['shipping_country']); // Shipping country
    unset($fields['shipping']['shipping_state']); // Shipping state
    
    // remove order comment fields
    unset($fields['order']['order_comments']); // Order comments
     return $fields;
}

No tienes que pegarlos todos, solo usa los que necesites. Por ejemplo, si necesita eliminar los campos Dirección de facturación 2, Estado y Compañía, use este código a continuación.

// Remove checkout fields
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

function custom_override_checkout_fields( $fields ) {
 // remove billing fields

    unset($fields['billing']['billing_company']); // Billing company
    unset($fields['billing']['billing_address_2']); // Billing Address 2
    unset($fields['billing']['billing_state']); // Billing state
   
     return $fields;
}

¿Cómo hacer que los campos de pago de Woocommerce sean opcionales?

Preste atención a que «verdadero» = obligatorio y si desea que el campo sea opcional, establézcalo en «falso».

add_filter( 'woocommerce_default_address_fields' , 'optional_default_address_fields' );
 function optional_default_address_fields( $address_fields ) {
 	$address_fields['first_name']['required'] = true;	 
 	$address_fields['last_name']['required'] = true;
 	$address_fields['company']['required'] = false;
	$address_fields['address_1']['required'] = true;
	$address_fields['address_2']['required'] = false;
	$address_fields['country']['required'] = false;
 	$address_fields['postcode']['required'] = false;
 	$address_fields['city']['required'] = false;
 	$address_fields['state']['required'] = false;
 return $address_fields;
 }
// For billing email and phone fields
add_filter('woocommerce_billing_fields', 'optional_checkout_fields1', 1000, 1);
function optional_checkout_fields1( $fields ) {
    $fields['billing_email']['required'] = true;
    $fields['billing_phone']['required'] = false;
    return $fields;
}

Y nuevamente, si solo necesita algunos campos opcionales, simplemente pegue las filas que necesite. Por ejemplo, este fragmento hace que los campos de país y teléfono sean opcionales.

add_filter( 'woocommerce_default_address_fields' , 'optional_default_address_fields' );
 function optional_default_address_fields( $address_fields ) {
	$address_fields['country']['required'] = false;
 return $address_fields;
 }

// For billing email and phone fields
add_filter('woocommerce_billing_fields', 'optional_checkout_fields1', 1000, 1);
function optional_checkout_fields1( $fields ) {
    $fields['billing_phone']['required'] = false;
    return $fields;
}

Filtrar por productos destacados en admin

function featured_products_filter() {

     global $typenow, $wp_query;

    if ($typenow=='product') :
        // Featured/ Not Featured
        $output .= "<select name="featured_status" id='dropdown_featured_status'>";
        $output .= '<option value="">'.__( 'Choose status', 'woocommerce' ).'</option>';

        $output .="<option value="featured" ";
        if ( isset( $_GET['featured_status'] ) ) $output .= selected('featured', $_GET['featured_status'], false);
        $output .=">".__( 'Featured', 'woocommerce' )."</option>";

        $output .="<option value="normal" ";
        if ( isset( $_GET['featured_status'] ) ) $output .= selected('normal', $_GET['featured_status'], false);
        $output .=">".__( 'Non-featured', 'woocommerce' )."</option>";

        $output .="</select>";

        echo $output;
    endif;
}
add_action('restrict_manage_posts', 'featured_products_filter');

function featured_products_filter_query( $query ) {
    global $typenow;

    if ( $typenow == 'product' ) {

        // Subtypes
        if ( ! empty( $_GET['featured_status'] ) ) {
            if ( $_GET['featured_status'] == 'featured' ) {
                $query->query_vars['tax_query'][] = array(
                    'taxonomy' => 'product_visibility',
                    'field'    => 'slug',
                    'terms'    => 'featured',
                );
            } elseif ( $_GET['featured_status'] == 'normal' ) {
                $query->query_vars['tax_query'][] = array(
                    'taxonomy' => 'product_visibility',
                    'field'    => 'slug',
                    'terms'    => 'featured',
                    'operator' => 'NOT IN',
                );
            }
        }

    }

}
add_filter( 'parse_query', 'featured_products_filter_query' );

Filtrar por productos en oferta en admin

function backend_onsale_filter($output) {
	global $wp_query;
	
	$selected = 0;
	if (isset($_GET['product_sale'])) {
		$selected = (int)$_GET['product_sale'];
	}
	
	$output .= '
		<select id="dropdown_product_sale" name="product_sale">
			<option value="">Sale price filter</option>
			<option selected="selected" value="1">On sale</option>
			<option selected="selected" value="2">Regular price</option>
		</select>
	';
	
	return $output;
}
add_action('woocommerce_product_filters', 'backend_onsale_filter');
 
/*
 * Woocommerce Filter by on sale where statement
 */
function backend_onsale_where_statement($where) {
	global $wp_query, $wpdb;
 
	if (!is_admin() || $_GET['post_type'] != "product" || !isset($_GET['product_sale']) || $_GET['product_sale'] <= 0) {
		return $where;
	}
 
	$productsIDs = [];
	if ($_GET['product_sale'] == 1) {
		$querystr="
			SELECT p.ID
			FROM " . $wpdb->posts . ' p
			WHERE p.ID IN (
				SELECT post_id FROM ' . $wpdb->postmeta . ' pm WHERE pm.meta_key = "_sale_price" AND pm.meta_value > ''
			)
		';
		
		$pageposts = $wpdb->get_results($querystr, OBJECT);
		
		$productsIDs = array_map(function($n){
			return $n->ID;
		}, $pageposts);
	} elseif ($_GET['product_sale'] == 2) {
		$querystr="
			SELECT p.ID
			FROM " . $wpdb->posts . ' p
			WHERE p.ID NOT IN (
				SELECT post_id FROM ' . $wpdb->postmeta . ' pm WHERE pm.meta_key = "_sale_price" AND pm.meta_value > ''
			)
		';
		
		$pageposts = $wpdb->get_results($querystr, OBJECT);
		
		$productsIDs = array_map(function($n){
			return $n->ID;
		}, $pageposts);
	}
	
	$where .= ' AND ' . $wpdb->posts . '.ID IN (' . implode(",", $productsIDs) . ') ';
	
	return $where;
}
add_filter('posts_where' , 'backend_onsale_where_statement');

Deshabilite Woocommerce Analytics y otras hinchazones

add_filter( 'woocommerce_admin_disabled', '__return_true' );

¿Te ha resultado útil??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicado. Required fields are marked *