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.
¿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