Adicionando a quantidade de unidades após o preço do WooCommerce. Exemplo $ 24 / m2 e $ 24 / m

Então, ei, pessoal,

Estou tentando obter o meu preço WooCommerce por unidade. Alguns dos itens que eu estou vendendo são floortiles e, a partir desses, são vendidos por metro quadrado.

Eu adicionei o seguinte código para exibir / m2 por trás de cada preço

.amount:after{ content: "/m2"; text-size: 13px; } 

Isso adiciona o / m2 após cada preço.

No entanto, alguns dos itens que eu atualmente estou vendendo não são floortiles. Por exemplo, as tiras de decoração são vendidas por metro. E eu estou vendendo blocos de colunas, que são vendidos por peça. Como posso adicionar as unidades de preço corretamente?

O WooCommerce CSS reconhece o SKU? e, em caso afirmativo, como implementá-lo?

Solutions Collecting From Web of "Adicionando a quantidade de unidades após o preço do WooCommerce. Exemplo $ 24 / m2 e $ 24 / m"

Em primeiro lugar , fazer isso com CSS na minha mente absolutamente não é o caminho a seguir.

Em segundo lugar , pagar 129 $ por uma extensão para ter essa característica menor seria apenas ridículo – nada contra o plugin per se.

Em terceiro lugar , a solução básica abaixo descrita é baseada no exemplo da página add_meta_box codex. Existem várias outras soluções para alcançar isso, simplesmente dê uma olhada, isso atende a você começar.

Código:

 /** * Adds a box to the main column on the Post and Page edit screens. */ function wpse103469_wc_price_per_unit_mb() { $screens = array( 'post', 'page', 'product' ); foreach ( $screens as $screen ) { add_meta_box( 'wc_price_per_unit_mb', __( 'Price per Unit', 'myplugin_textdomain' ), 'wpse103469_wc_price_per_unit_inner_mb', $screen, 'advanced', 'high' ); } } add_action( 'add_meta_boxes', 'wpse103469_wc_price_per_unit_mb' ); /** * Prints the box content. * * @param WP_Post $post The object for the current post/page. */ function wpse103469_wc_price_per_unit_inner_mb( $post ) { // Add an nonce field so we can check for it later. wp_nonce_field( 'wpse103469_wc_price_per_unit_inner_mb', 'wpse103469_wc_price_per_unit_inner_mb_nonce' ); /* * Use get_post_meta() to retrieve an existing value * from the database and use the value for the form. */ $value = get_post_meta( $post->ID, 'wc_price_per_unit_key', true ); echo ' '; echo ''; } /** * When the post is saved, saves our custom data. * * @param int $post_id The ID of the post being saved. */ function wpse103469_wc_price_per_unit_save_postdata( $post_id ) { /* * We need to verify this came from the our screen and with proper authorization, * because save_post can be triggered at other times. */ // Check if our nonce is set. if ( ! isset( $_POST['wpse103469_wc_price_per_unit_inner_mb_nonce'] ) ) return $post_id; $nonce = $_POST['wpse103469_wc_price_per_unit_inner_mb_nonce']; // Verify that the nonce is valid. if ( ! wp_verify_nonce( $nonce, 'wpse103469_wc_price_per_unit_inner_mb' ) ) return $post_id; // If this is an autosave, our form has not been submitted, so we don't want to do anything. if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return $post_id; // Check the user's permissions. if ( 'page' == $_POST['post_type'] ) { if ( ! current_user_can( 'edit_page', $post_id ) ) return $post_id; } else { if ( ! current_user_can( 'edit_post', $post_id ) ) return $post_id; } /* OK, its safe for us to save the data now. */ // Sanitize user input. $price_per_unit = sanitize_text_field( $_POST['wc_price_per_unit_field'] ); // Update the meta field in the database. update_post_meta( $post_id, 'wc_price_per_unit_key', $price_per_unit ); } add_action( 'save_post', 'wpse103469_wc_price_per_unit_save_postdata' ); 

O campo meta “Preço por Unidade” pode ser emitido assim:

 echo get_post_meta(get_the_ID(), 'wc_price_per_unit_key', true); 

no arquivo de modelo de acordo.

Para adicionar as informações do campo “Preço por unidade” diretamente ao resultado de preço, você pode fazer algo como isto:

 add_filter('woocommerce_get_price_html','wpse103469_add_price_per_unit_meta_to_price'); function wpse103469_add_price_per_unit_meta_to_price( $price ) { $price .= ' ' . get_post_meta(get_the_ID(), 'wc_price_per_unit_key', true); return $price; } 

Primeiro, responderei a sua pergunta do jeito que você estava indo sobre isso e então eu vou responder da maneira que eu acho que deveria ser feito.

CSS

Você pode fazer isso com o CSS de duas maneiras menores diferentes:

1) Você pode segmentar qualquer página do produto:

 .single-product .amount:after{ content: "/m2"; text-size: 13px; } 

2) Você pode segmentar qualquer produto específico com seu ID do produto :

 .postid-XXXX .amount:after{ content: "/m2"; text-size: 13px; } 

3) Você pode segmentar uma categoria específica com o ID da categoria :

 .term-XXXX .amount:after{ content: "/m2"; text-size: 13px; } 

Calculadora de preços de medição

Você poderia, naturalmente, usar a extensão Calculadora de preço de medição para o WooCommerce. Isso faz todo o que você quer e adiciona um monte de elementos incríveis de UI. Provavelmente é assim que eu faria isso.