Добавление единицы товара после цены WooCommerce. Пример: $ 24 / м2 и $ 24 / м

Так что, ребята,

Я пытаюсь получить мою цену WooCommerce за единицу. Некоторые из предметов, которые я продаю, являются флотилиями, и, как таковые, они продаются за квадратный метр.

Я добавил следующий код для отображения / м2 за каждой ценой

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

Это добавляет / м2 после каждой цены.

Однако некоторые из предметов, которые я сейчас продаю, – это не floortiles. Например, украшения полос продаются за метр. И я продаю колонки, которые продаются за штуку. Как я могу правильно добавить единицы цены?

Значит ли WooCommerce CSS код SKU? и если да, то как его реализовать?

Во-первых , делать это с CSS в моем уме абсолютно не так.

Во-вторых , заплатить 129 $ за расширение, чтобы эта второстепенная функция была просто смешной – ничего против плагина как такового.

В-третьих , нижеследующее основное решение основано на примере с страницы add_meta_box codex. Существуют различные другие решения для достижения этого, просто осмотритесь, это поможет вам начать.

Код:

 /** * 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 '<label for="wc_price_per_unit_field">'; _e( "Price per Unit", 'myplugin_textdomain' ); echo '</label> '; echo '<input type="text" id="wc_price_per_unit_field" name="wc_price_per_unit_field" value="' . esc_attr( $value ) . '" size="25" />'; } /** * 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' ); 

«Цена за единицу» «Мета-поле» может выводиться следующим образом:

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

в соответствующем файле шаблона.

Для того, чтобы добавить информацию из поля «Цена за единицу» «Meta» непосредственно к выходу цены, вы можете сделать что-то вроде этого:

 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; } 

Сначала я отвечу на ваш вопрос так, как вы это делали, и тогда я собираюсь ответить на него так, как я думаю, это должно быть сделано.

CSS

Вы можете сделать это с помощью CSS несколькими разными способами:

1) Вы можете настроить таргетинг на любую страницу продукта:

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

2) Вы можете настроить таргетинг на любой конкретный продукт с его идентификатором продукта :

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

3) Вы можете настроить таргетинг на определенную категорию с идентификатором категории :

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

Калькулятор цен измерения

Разумеется, вы можете использовать расширение калькулятора калькуляции для WooCommerce. Это делает целую кучу того, что вы хотите, и это добавляет кучу удивительных элементов пользовательского интерфейса. Вероятно, я это сделаю.