Plugin Directory

Changeset 3486551


Ignore:
Timestamp:
03/19/2026 02:09:41 PM (2 weeks ago)
Author:
wpclever
Message:

Update 5.3.9

Location:
wpc-price-by-quantity
Files:
49 added
11 edited

Legend:

Unmodified
Added
Removed
  • wpc-price-by-quantity/trunk/includes/class-backend.php

    r3443064 r3486551  
    2020            // Settings
    2121            add_action( 'admin_init', [ $this, 'register_settings' ] );
     22            add_filter( 'pre_update_option', [ $this, 'last_saved' ], 10, 2 );
    2223            add_action( 'admin_menu', [ $this, 'admin_menu' ] );
    2324
     
    221222                    'sanitize_callback' => [ 'Wpcpq_Helper', 'sanitize_array' ],
    222223            ] );
     224        }
     225
     226        function last_saved( $value, $option ) {
     227            if ( $option == 'wpcpq_settings' || $option == 'wpcpq_localization' ) {
     228                $value['_last_saved']    = current_time( 'timestamp' );
     229                $value['_last_saved_by'] = get_current_user_id();
     230            }
     231
     232            return $value;
    223233        }
    224234
     
    442452                                <tr class="submit">
    443453                                    <th colspan="2">
    444                                         <?php settings_fields( 'wpcpq_settings' ); ?><?php submit_button(); ?>
     454                                        <div class="wpclever_submit">
     455                                            <?php
     456                                            settings_fields( 'wpcpq_settings' );
     457                                            submit_button( '', 'primary', 'submit', false );
     458
     459                                            if ( function_exists( 'wpc_last_saved' ) ) {
     460                                                wpc_last_saved( Wpcpq_Helper()::get_settings() );
     461                                            }
     462                                            ?>
     463                                        </div>
    445464                                        <a style="display: none;" class="wpclever_export"
    446465                                           data-key="wpcpq_settings"
     
    585604                                <tr class="submit">
    586605                                    <th colspan="2">
    587                                         <?php settings_fields( 'wpcpq_localization' ); ?><?php submit_button(); ?>
     606                                        <div class="wpclever_submit">
     607                                            <?php
     608                                            settings_fields( 'wpcpq_localization' );
     609                                            submit_button( '', 'primary', 'submit', false );
     610
     611                                            if ( function_exists( 'wpc_last_saved' ) ) {
     612                                                wpc_last_saved( get_option( 'wpcpq_localization', [] ) );
     613                                            }
     614                                            ?>
     615                                        </div>
    588616                                        <a style="display: none;" class="wpclever_export"
    589617                                           data-key="wpcpq_localization"
     
    665693        }
    666694
    667         public function ajax_add_role_price() {
     695        function ajax_add_role_price() {
    668696            if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST['nonce'] ), 'wpcpq-security' ) ) {
    669697                die( 'Permissions check failed!' );
     
    689717
    690718            if ( ! empty( $role ) ) {
    691                 $key    = $role;
     719                $key    = Wpcpq_Helper()::generate_key();
    692720                $active = true;
    693721                $price  = [
     722                        'role'      => $role,
    694723                        'apply'     => $apply,
    695724                        'apply_val' => $apply_val,
  • wpc-price-by-quantity/trunk/includes/class-frontend.php

    r3424526 r3486551  
    198198                        <div class="wpcpq-item-price">
    199199                            <?php
    200                             $tier_price = wc_get_price_to_display( $product, [ 'price' => $product_price ] );
    201                             echo wp_kses_post( apply_filters( 'wpcpq_item_price_default', apply_filters( 'wpcpq_item_price', '<span class="wpcpq-item-price-val">' . Wpcpq_Helper()::display_price( $tier_price, 'default' ) . '</span>', [], $product, $tier_price ), $tiers, $product, $tier_price ) );
     200                            echo wp_kses_post( apply_filters( 'wpcpq_item_price_default', apply_filters( 'wpcpq_item_price', '<span class="wpcpq-item-price-val">' . Wpcpq_Helper()::display_price( $product_price, 'default' ) . '</span>', [], $product, $product_price ), $tiers, $product, $product_price ) );
    202201                            ?>
    203202                        </div>
     
    277276
    278277                        // item price
    279                         $tier_price = wc_get_price_to_display( $product, [ 'price' => Wpcpq_Helper()::calculate_price( $item_price, $product_price ), ] );
     278                        $tier_price = Wpcpq_Helper()::calculate_price( $item_price, $product_price );
    280279                        echo '<div class="wpcpq-item-price">' . wp_kses_post( apply_filters( 'wpcpq_item_price', '<span class="wpcpq-item-price-val">' . Wpcpq_Helper()::display_price( $tier_price ) . '</span>', $tier, $product, $tier_price ) );
    281280
     
    357356                            <?php
    358357                            // item price
    359                             $tier_price = wc_get_price_to_display( $product, [ 'price' => Wpcpq_Helper()::calculate_price( $item_price, $product_price ), ] );
     358                            $tier_price = Wpcpq_Helper()::calculate_price( $item_price, $product_price );
    360359                            echo '<div class="wpcpq-item-price">' . wp_kses_post( apply_filters( 'wpcpq_item_price', sprintf( Wpcpq_Helper()::localization( 'qb_item_price', /* translators: price */ esc_html__( '%s for each product', 'wpc-price-by-quantity' ) ), '<span class="wpcpq-item-price-val">' . Wpcpq_Helper()::display_price( $tier_price ) . '</span>' ), $tier, $product, $tier_price ) ) . '</div>';
    361360
     
    404403                        <div class="wpcpq-item-price">
    405404                            <?php
    406                             $tier_price = wc_get_price_to_display( $product, [ 'price' => $product_price ] );
    407                             echo wp_kses_post( apply_filters( 'wpcpq_item_price_default', apply_filters( 'wpcpq_item_price', '<span class="wpcpq-item-price-val">' . Wpcpq_Helper()::display_price( $tier_price ) . '</span>', [], $product, $tier_price ), $tiers, $product, $tier_price ) );
     405                            echo wp_kses_post( apply_filters( 'wpcpq_item_price_default', apply_filters( 'wpcpq_item_price', '<span class="wpcpq-item-price-val">' . Wpcpq_Helper()::display_price( $product_price ) . '</span>', [], $product, $product_price ), $tiers, $product, $product_price ) );
    408406                            ?>
    409407                        </div>
     
    484482                        <?php
    485483                        // item price
    486                         $tier_price = wc_get_price_to_display( $product, [ 'price' => Wpcpq_Helper()::calculate_price( $item_price, $product_price ), ] );
     484                        $tier_price = Wpcpq_Helper()::calculate_price( $item_price, $product_price );
    487485                        echo '<div class="wpcpq-item-price">' . wp_kses_post( apply_filters( 'wpcpq_item_price', '<span class="wpcpq-item-price-val">' . Wpcpq_Helper()::display_price( $tier_price ) . '</span>', $tier, $product, $tier_price ) );
    488486
  • wpc-price-by-quantity/trunk/includes/class-helper.php

    r3443064 r3486551  
    182182                }
    183183
     184                $role      = $price['role'] ?? 'wpcpq_all';
    184185                $apply     = ! empty( $price['apply'] ) ? $price['apply'] : 'all';
    185186                $apply_val = ! empty( $price['apply_val'] ) ? explode( ',', $price['apply_val'] ) : [];
    186 
    187                 if ( ! empty( $price['role'] ) ) {
    188                     $role = $price['role'];
    189                 } else {
    190                     if ( ! str_contains( $key, '**' ) ) {
    191                         $role = $key;
    192                     } else {
    193                         $key_arr = explode( '**', $key );
    194                         $role    = ! empty( $key_arr[1] ) ? $key_arr[1] : 'all';
    195                     }
    196                 }
    197187
    198188                // check role
  • wpc-price-by-quantity/trunk/includes/dashboard/css/dashboard.css

    r3387392 r3486551  
    287287}
    288288
     289.wpclever_settings_page .wpclever_settings_page_content table tr.submit .wpclever_submit {
     290  display: flex;
     291  align-items: center;
     292}
     293
     294.wpclever_settings_page .wpclever_settings_page_content table tr.submit .wpc-last-saved {
     295  font-weight: 400;
     296  font-size: 12px;
     297  color: #999;
     298  margin-left: 10px;
     299  display: flex;
     300  align-items: center;
     301}
     302
     303.wpclever_settings_page .wpclever_settings_page_content table tr.submit .wpc-last-saved .dashicons {
     304  font-size: 15px;
     305  width: 15px;
     306  height: 15px;
     307  margin-right: 5px;
     308  color: #22c55e;
     309}
     310
    289311.wpclever_settings_page .wpclever_settings_page_content table tr.submit .wpclever_export {
    290312  position: absolute;
     
    293315  transform: translateY(-50%);
    294316  font-weight: 400;
     317}
     318
     319#wpclever_export .wpclever_export_data {
     320  width: 100%;
     321  font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
     322  font-size: 12.5px;
     323  line-height: 20px;
     324  padding: 0 12px;
     325  background-image: repeating-linear-gradient(to bottom, #ffffff 0px, #ffffff 20px, #fafafa 20px, #fafafa 40px);
     326  background-attachment: local;
     327  resize: vertical;
     328  box-sizing: border-box;
     329  outline: none;
    295330}
    296331
     
    462497  border-left: none;
    463498  border-right: 4px solid #23282d;
     499}
     500
     501body.rtl .wpclever_settings_page .wpclever_settings_page_content table tr.submit .wpclever_export {
     502  left: 20px;
     503  right: auto;
    464504}
    465505
  • wpc-price-by-quantity/trunk/includes/dashboard/css/dashboard.css.map

    r3387392 r3486551  
    1 {"version":3,"sourceRoot":"","sources":["dashboard.scss"],"names":[],"mappings":";AAAA;EACE;IACE;;;AAIJ;EACE;IACE;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAEA;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AAEA;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;AAEA;EACE;IACE;IACA;IACA;IACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;IACE;;;AAIJ;EACE;IACE;;;AAIJ;EACE;IACE;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AAEA;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;AAEA;EACE;;;AAGF;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA","file":"dashboard.css"}
     1{"version":3,"sourceRoot":"","sources":["dashboard.scss"],"names":[],"mappings":";AAAA;EACE;IACE;;;AAIJ;EACE;IACE;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAEA;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AAEA;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;AAEA;EACE;IACE;IACA;IACA;IACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EAOA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;IACE;;;AAIJ;EACE;IACE;;;AAIJ;EACE;IACE;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AAEA;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;AAEA;EACE;;;AAGF;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA","file":"dashboard.css"}
  • wpc-price-by-quantity/trunk/includes/dashboard/css/dashboard.scss

    r3387392 r3486551  
    299299}
    300300
     301.wpclever_settings_page .wpclever_settings_page_content table tr.submit .wpclever_submit {
     302  display: flex;
     303  align-items: center;
     304}
     305
     306.wpclever_settings_page .wpclever_settings_page_content table tr.submit .wpc-last-saved {
     307  font-weight: 400;
     308  font-size: 12px;
     309  color: #999;
     310  margin-left: 10px;
     311  display: flex;
     312  align-items: center;
     313}
     314
     315.wpclever_settings_page .wpclever_settings_page_content table tr.submit .wpc-last-saved .dashicons {
     316  font-size: 15px;
     317  width: 15px;
     318  height: 15px;
     319  margin-right: 5px;
     320  color: #22c55e;
     321}
     322
    301323.wpclever_settings_page .wpclever_settings_page_content table tr.submit .wpclever_export {
    302324  position: absolute;
     
    305327  transform: translateY(-50%);
    306328  font-weight: 400;
     329}
     330
     331#wpclever_export .wpclever_export_data {
     332  width: 100%;
     333  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
     334  font-size: 12.5px;
     335  line-height: 20px;
     336  padding: 0 12px;
     337  background-image: repeating-linear-gradient(
     338                  to bottom,
     339                  #ffffff 0px,
     340                  #ffffff 20px,
     341                  #fafafa 20px,
     342                  #fafafa 40px
     343  );
     344  background-attachment: local;
     345  resize: vertical;
     346  box-sizing: border-box;
     347  outline: none;
    307348}
    308349
     
    478519  border-left: none;
    479520  border-right: 4px solid #23282d;
     521}
     522
     523body.rtl .wpclever_settings_page .wpclever_settings_page_content table tr.submit .wpclever_export {
     524  left: 20px;
     525  right: auto;
    480526}
    481527
  • wpc-price-by-quantity/trunk/includes/dashboard/wpc-dashboard.php

    r3387392 r3486551  
    11<?php
    22defined( 'ABSPATH' ) || exit;
    3 
    4 if ( ! class_exists( 'WPCleverMenu' ) ) {
    5     class WPCleverMenu {
    6         function __construct() {
    7             // do nothing, moved to WPCleverDashboard
    8         }
    9     }
    10 
    11     new WPCleverMenu();
    12 }
    133
    144if ( ! class_exists( 'WPCleverDashboard' ) ) {
     
    232222
    233223            if ( ! empty( $key ) && ( $settings = get_option( $key ) ) ) {
     224                unset( $settings['_last_saved'] );
     225                unset( $settings['_last_saved_by'] );
     226
    234227                echo '<textarea class="wpclever_export_data" id="wpclever_export_data" style="width: 100%; height: 200px; margin-bottom: 10px;" data-key="' . esc_attr( $key ) . '">' . esc_textarea( wp_json_encode( $settings, JSON_PRETTY_PRINT ) ) . '</textarea>';
    235228                echo '<div style="display: flex; align-items: center"><button class="button button-primary wpclever_import" data-key="' . esc_attr( $key ) . '">Update</button>';
     
    265258    new WPCleverDashboard();
    266259}
     260
     261if ( ! function_exists( 'wpc_last_saved' ) ) {
     262    function wpc_last_saved( $settings ) {
     263        $last_saved = isset( $settings['_last_saved'] ) ? (int) $settings['_last_saved'] : 0;
     264
     265        if ( $last_saved ) {
     266            $time_diff = human_time_diff( $last_saved, current_time( 'timestamp' ) );
     267            $time_full = date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $last_saved );
     268
     269            // Who saved it
     270            $saved_by_id   = isset( $settings['_last_saved_by'] ) ? (int) $settings['_last_saved_by'] : 0;
     271            $saved_by_name = '';
     272
     273            if ( $saved_by_id ) {
     274                $user = get_userdata( $saved_by_id );
     275
     276                if ( $user ) {
     277                    $saved_by_name = $user->display_name;
     278                }
     279            }
     280
     281            $by_text = $saved_by_name ? ' ' . sprintf( 'by %s', esc_html( $saved_by_name ) ) : '';
     282
     283            echo '<span class="wpc-last-saved" title="' . esc_attr( $time_full ) . '"><span class="dashicons dashicons-saved"></span> '
     284                 . sprintf(
     285                         'Saved %1$s ago',
     286                         esc_html( $time_diff )
     287                 )
     288                 . $by_text
     289                 . '</span>';
     290        }
     291    }
     292}
  • wpc-price-by-quantity/trunk/includes/templates/role-price.php

    r3324640 r3486551  
    1111defined( 'ABSPATH' ) || exit;
    1212
    13 if ( ! str_contains( $key, '**' ) ) {
    14     $role = $key;
    15     $key  = Wpcpq_Helper()::generate_key() . '**' . $role;
    16 } else {
    17     $key_arr = explode( '**', $key );
    18     $role    = ! empty( $key_arr[1] ) ? $key_arr[1] : 'all';
    19 }
    20 
    2113global $wp_roles;
    2214
     15$role = ! empty( $price['role'] ) ? $price['role'] : 'wpcpq_all';
     16
    2317switch ( $role ) {
    24     case 'all':
    25     case 'wpcpq_all':
    26         $role_name = esc_html__( 'All', 'wpc-price-by-quantity' );
    27         break;
     18    case 'all':
     19    case 'wpcpq_all':
     20        $role_name = esc_html__( 'All', 'wpc-price-by-quantity' );
     21        break;
    2822
    29     case 'wpcpq_user':
    30         $role_name = esc_html__( 'User (logged in)', 'wpc-price-by-quantity' );
    31         break;
     23    case 'wpcpq_user':
     24        $role_name = esc_html__( 'User (logged in)', 'wpc-price-by-quantity' );
     25        break;
    3226
    33     case 'wpcpq_guest':
    34         $role_name = esc_html__( 'Guest (not logged in)', 'wpc-price-by-quantity' );
    35         break;
     27    case 'wpcpq_guest':
     28        $role_name = esc_html__( 'Guest (not logged in)', 'wpc-price-by-quantity' );
     29        break;
    3630
    37     default:
    38         $role_name = isset( $wp_roles->roles[ $role ] ) ? $wp_roles->roles[ $role ]['name'] : esc_html__( 'All', 'wpc-price-by-quantity' );
     31    default:
     32        $role_name = isset( $wp_roles->roles[ $role ] ) ? $wp_roles->roles[ $role ]['name'] : esc_html__( 'All', 'wpc-price-by-quantity' );
    3933}
    4034
     
    4438$layout         = ! empty( $price['layout'] ) ? $price['layout'] : 'default';
    4539$exclude_onsale = ! empty( $price['exclude_onsale'] ) ? $price['exclude_onsale'] : 'no';
     40$class          = 'wpcpq-item wpcpq-item-' . $key . ( $active ? ' active' : '' );
    4641?>
    47 <div class="<?php echo esc_attr( $active ? 'wpcpq-item active' : 'wpcpq-item' ); ?>">
     42<div class="<?php echo esc_attr( $class ); ?>">
    4843    <div class="wpcpq-item-header">
    4944        <span class="wpcpq-item-move ui-sortable-handle"><?php esc_html_e( 'move', 'wpc-price-by-quantity' ); ?></span>
     
    6459                    <option value="products" <?php selected( $apply, 'products' ); ?>
    6560                            disabled><?php esc_attr_e( 'Selected products (Premium)', 'wpc-price-by-quantity' ); ?></option>
    66                     <?php
    67                     $taxonomies = get_object_taxonomies( 'product', 'objects' );
     61                    <?php
     62                    $taxonomies = get_object_taxonomies( 'product', 'objects' );
    6863
    69                     foreach ( $taxonomies as $taxonomy ) {
    70                         echo '<option value="' . esc_attr( $taxonomy->name ) . '" ' . selected( $apply, $taxonomy->name, false ) . '>' . esc_html( $taxonomy->label ) . '</option>';
    71                     }
    72                     ?>
     64                    foreach ( $taxonomies as $taxonomy ) {
     65                        echo '<option value="' . esc_attr( $taxonomy->name ) . '" ' . selected( $apply, $taxonomy->name, false ) . '>' . esc_html( $taxonomy->label ) . '</option>';
     66                    }
     67                    ?>
    7368                </select> <span><?php esc_html_e( 'Exclude on-sale products', 'wpc-price-by-quantity' ); ?> <input
    7469                            type="checkbox"
     
    8075                       name="<?php echo esc_attr( 'wpcpq_prices' . $name . '[' . $key . '][apply_val]' ); ?>"
    8176                       type="hidden" value="<?php echo esc_attr( $apply_val ); ?>"/>
    82                 <?php if ( ! is_array( $apply_val ) ) {
    83                     $apply_val = array_map( 'trim', explode( ',', $apply_val ) );
    84                 } ?>
     77                <?php if ( ! is_array( $apply_val ) ) {
     78                    $apply_val = array_map( 'trim', explode( ',', $apply_val ) );
     79                } ?>
    8580                <select class="wpcpq_terms" multiple="multiple"
    8681                        data-<?php echo esc_attr( $apply ); ?>="<?php echo esc_attr( implode( ',', $apply_val ) ); ?>">
    87                     <?php if ( is_array( $apply_val ) && ! empty( $apply_val ) ) {
    88                         foreach ( $apply_val as $t ) {
    89                             if ( $term = get_term_by( 'slug', $t, $apply ) ) {
    90                                 echo '<option value="' . esc_attr( $t ) . '" selected>' . esc_html( $term->name ) . '</option>';
    91                             }
    92                         }
    93                     } ?>
     82                    <?php if ( is_array( $apply_val ) && ! empty( $apply_val ) ) {
     83                        foreach ( $apply_val as $t ) {
     84                            if ( $term = get_term_by( 'slug', $t, $apply ) ) {
     85                                echo '<option value="' . esc_attr( $t ) . '" selected>' . esc_html( $term->name ) . '</option>';
     86                            }
     87                        }
     88                    } ?>
    9489                </select>
    9590            </div>
     
    127122                    aria-label="<?php echo esc_attr( esc_html__( 'Set the price in numbers and the following characters: + / - / %. &#10; For example: &#10; +2: Increase the product price by 2 &#10; -5: Decrease the product price by 5 &#10; 10: Set the new product price as 10 &#10; 90%: Set the new product price as 90% of the original price.', 'wpc-price-by-quantity' ) ); ?>"><span
    128123                        class="wpcpq-help-tip"></span></span>
    129             <?php
    130             $count = 0;
     124            <?php
     125            $count = 0;
    131126
    132             if ( ! empty( $price['tiers'] ) && is_array( $price['tiers'] ) ) {
    133                 foreach ( $price['tiers'] as $tier ) {
    134                     $tier       = array_merge( [ 'quantity' => '', 'price' => '', 'text' => '' ], $tier );
    135                     $tier_price = Wpcpq_Helper()::clean_price( $tier['price'] );
    136                     ?>
     127            if ( ! empty( $price['tiers'] ) && is_array( $price['tiers'] ) ) {
     128                foreach ( $price['tiers'] as $tier ) {
     129                    $tier       = array_merge( [ 'quantity' => '', 'price' => '', 'text' => '' ], $tier );
     130                    $tier_price = Wpcpq_Helper()::clean_price( $tier['price'] );
     131                    ?>
    137132                    <div class="input-panel wpcpq-quantity">
    138133                        <span class="wpcpq-qty-wrapper hint--top"
     
    158153                              aria-label="<?php esc_attr_e( 'remove', 'wpc-price-by-quantity' ); ?>">&times;</span>
    159154                    </div>
    160                     <?php
    161                     $count ++;
    162                 }
    163             } ?>
     155                    <?php
     156                    $count ++;
     157                }
     158            } ?>
    164159            <button class="button wpcpq-add-qty" type="button"
    165160                    data-id="<?php echo esc_attr( $is_variation ? $product_id : 0 ); ?>"
    166161                    data-key="<?php echo esc_attr( $key ); ?>"
    167162                    data-count="<?php echo esc_attr( is_array( $price['tiers'] ) && ! empty( $price['tiers'] ) ? count( $price['tiers'] ) : 0 ); ?>">
    168                 <?php esc_html_e( '+ New row', 'wpc-price-by-quantity' ); ?>
     163                <?php esc_html_e( '+ New row', 'wpc-price-by-quantity' ); ?>
    169164            </button>
    170165        </div>
  • wpc-price-by-quantity/trunk/languages/wpc-price-by-quantity.pot

    r3473223 r3486551  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: WPC Price by Quantity for WooCommerce 5.3.8\n"
     5"Project-Id-Version: WPC Price by Quantity for WooCommerce 5.3.9\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wpc-price-by-quantity\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2026-03-03T03:12:16+00:00\n"
     12"POT-Creation-Date: 2026-03-19T14:08:17+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.12.0\n"
     
    4040msgstr ""
    4141
    42 #: includes/class-backend.php:67
    43 #: includes/class-backend.php:139
    44 #: includes/class-backend.php:754
     42#: includes/class-backend.php:68
     43#: includes/class-backend.php:140
     44#: includes/class-backend.php:783
    4545msgid "Price by Quantity"
    4646msgstr ""
    4747
    48 #: includes/class-backend.php:90
     48#: includes/class-backend.php:91
    4949msgid "Product wasn't returned."
    5050msgstr ""
    5151
    52 #: includes/class-backend.php:103
    53 #: includes/class-backend.php:240
     52#: includes/class-backend.php:104
     53#: includes/class-backend.php:250
    5454msgid "WPC Price by Quantity"
    5555msgstr ""
    5656
    57 #: includes/class-backend.php:141
     57#: includes/class-backend.php:142
    5858msgid "Global"
    5959msgstr ""
    6060
    61 #: includes/class-backend.php:142
    62 #: includes/class-backend.php:768
     61#: includes/class-backend.php:143
     62#: includes/class-backend.php:797
    6363msgid "Disable"
    6464msgstr ""
    6565
    66 #: includes/class-backend.php:144
     66#: includes/class-backend.php:145
    6767msgid "Parent"
    6868msgstr ""
    6969
    70 #: includes/class-backend.php:146
    71 #: includes/class-backend.php:772
     70#: includes/class-backend.php:147
     71#: includes/class-backend.php:801
    7272msgid "Override"
    7373msgstr ""
    7474
    75 #: includes/class-backend.php:240
     75#: includes/class-backend.php:250
    7676msgid "Premium"
    7777msgstr ""
    7878
    7979#. translators: stars
    80 #: includes/class-backend.php:243
     80#: includes/class-backend.php:253
    8181#, php-format
    8282msgid "Thank you for using our plugin! If you are satisfied, please reward it a full five-star %s rating."
    8383msgstr ""
    8484
    85 #: includes/class-backend.php:246
     85#: includes/class-backend.php:256
    8686msgid "Reviews"
    8787msgstr ""
    8888
    89 #: includes/class-backend.php:248
     89#: includes/class-backend.php:258
    9090msgid "Changelog"
    9191msgstr ""
    9292
    93 #: includes/class-backend.php:250
     93#: includes/class-backend.php:260
    9494msgid "Discussion"
    9595msgstr ""
    9696
    97 #: includes/class-backend.php:258
     97#: includes/class-backend.php:268
    9898msgid "Settings updated."
    9999msgstr ""
    100100
    101 #: includes/class-backend.php:265
    102 #: includes/class-backend.php:641
     101#: includes/class-backend.php:275
     102#: includes/class-backend.php:669
    103103msgid "Settings"
    104104msgstr ""
    105105
    106 #: includes/class-backend.php:269
     106#: includes/class-backend.php:279
    107107msgid "Localization"
    108108msgstr ""
    109109
    110 #: includes/class-backend.php:274
    111 #: includes/class-backend.php:642
     110#: includes/class-backend.php:284
     111#: includes/class-backend.php:670
    112112msgid "Premium Version"
    113113msgstr ""
    114114
    115 #: includes/class-backend.php:277
     115#: includes/class-backend.php:287
    116116msgid "Essential Kit"
    117117msgstr ""
    118118
    119 #: includes/class-backend.php:295
     119#: includes/class-backend.php:305
    120120msgid "Position"
    121121msgstr ""
    122122
    123 #: includes/class-backend.php:298
     123#: includes/class-backend.php:308
    124124msgid "Above the add to cart button"
    125125msgstr ""
    126126
    127 #: includes/class-backend.php:299
     127#: includes/class-backend.php:309
    128128msgid "Under the add to cart button"
    129129msgstr ""
    130130
    131 #: includes/class-backend.php:300
     131#: includes/class-backend.php:310
    132132msgid "Under the title"
    133133msgstr ""
    134134
    135 #: includes/class-backend.php:301
     135#: includes/class-backend.php:311
    136136msgid "Under the price"
    137137msgstr ""
    138138
    139 #: includes/class-backend.php:302
     139#: includes/class-backend.php:312
    140140msgid "Under the excerpt"
    141141msgstr ""
    142142
    143 #: includes/class-backend.php:303
     143#: includes/class-backend.php:313
    144144msgid "Under the meta"
    145145msgstr ""
    146146
    147 #: includes/class-backend.php:304
     147#: includes/class-backend.php:314
    148148msgid "Under the summary"
    149149msgstr ""
    150150
    151 #: includes/class-backend.php:305
     151#: includes/class-backend.php:315
    152152msgid "None (hide it)"
    153153msgstr ""
    154154
    155155#. translators: shortcode
    156 #: includes/class-backend.php:307
     156#: includes/class-backend.php:317
    157157#, php-format
    158158msgid "Choose where to display the pricing table on a single product page; use %s shortcode to place it anywhere."
    159159msgstr ""
    160160
    161 #: includes/class-backend.php:311
     161#: includes/class-backend.php:321
    162162msgid "Hide on low-stock products"
    163163msgstr ""
    164164
    165 #: includes/class-backend.php:314
     165#: includes/class-backend.php:324
     166#: includes/class-backend.php:345
     167#: includes/class-backend.php:377
     168msgid "Yes"
     169msgstr ""
     170
     171#: includes/class-backend.php:325
     172#: includes/class-backend.php:336
     173#: includes/class-backend.php:346
     174#: includes/class-backend.php:378
     175msgid "No"
     176msgstr ""
     177
     178#: includes/class-backend.php:327
     179msgid "Hide the pricing table for products with inventory quantities lower than the minimum quantity specified in the pricing options."
     180msgstr ""
     181
     182#: includes/class-backend.php:331
     183msgid "Change price"
     184msgstr ""
     185
     186#: includes/class-backend.php:334
     187msgid "Replace by active price"
     188msgstr ""
     189
    166190#: includes/class-backend.php:335
    167 #: includes/class-backend.php:367
    168 msgid "Yes"
    169 msgstr ""
    170 
    171 #: includes/class-backend.php:315
    172 #: includes/class-backend.php:326
    173 #: includes/class-backend.php:336
    174 #: includes/class-backend.php:368
    175 msgid "No"
    176 msgstr ""
    177 
    178 #: includes/class-backend.php:317
    179 msgid "Hide the pricing table for products with inventory quantities lower than the minimum quantity specified in the pricing options."
    180 msgstr ""
    181 
    182 #: includes/class-backend.php:321
    183 msgid "Change price"
    184 msgstr ""
    185 
    186 #: includes/class-backend.php:324
    187 msgid "Replace by active price"
    188 msgstr ""
    189 
    190 #: includes/class-backend.php:325
    191191msgid "Replace by total"
    192192msgstr ""
    193193
    194 #: includes/class-backend.php:328
     194#: includes/class-backend.php:338
    195195msgid "Change the main price when updating the quantity."
    196196msgstr ""
    197197
    198 #: includes/class-backend.php:332
     198#: includes/class-backend.php:342
    199199msgid "Click to set"
    200200msgstr ""
    201201
    202 #: includes/class-backend.php:338
     202#: includes/class-backend.php:348
    203203msgid "Change the main quantity when clicking on a pricing row."
    204204msgstr ""
    205205
    206 #: includes/class-backend.php:342
     206#: includes/class-backend.php:352
    207207msgid "Active color"
    208208msgstr ""
    209209
    210210#. translators: color
    211 #: includes/class-backend.php:349
     211#: includes/class-backend.php:359
    212212#, php-format
    213213msgid "Choose the color for the active price, default %s"
    214214msgstr ""
    215215
    216 #: includes/class-backend.php:353
     216#: includes/class-backend.php:363
    217217msgid "Active background color"
    218218msgstr ""
    219219
    220220#. translators: color
    221 #: includes/class-backend.php:360
     221#: includes/class-backend.php:370
    222222#, php-format
    223223msgid "Choose the background color for the active price, default %s"
    224224msgstr ""
    225225
    226 #: includes/class-backend.php:364
     226#: includes/class-backend.php:374
    227227msgid "Hide first row"
    228228msgstr ""
    229229
    230 #: includes/class-backend.php:370
     230#: includes/class-backend.php:380
    231231msgid "Hide the first row that show the original price."
    232232msgstr ""
    233233
    234 #: includes/class-backend.php:374
     234#: includes/class-backend.php:384
    235235msgid "After text"
    236236msgstr ""
    237237
    238 #: includes/class-backend.php:377
     238#: includes/class-backend.php:387
    239239msgid "Show"
    240240msgstr ""
    241241
    242 #: includes/class-backend.php:378
     242#: includes/class-backend.php:388
    243243msgid "Hide"
    244244msgstr ""
    245245
    246 #: includes/class-backend.php:380
     246#: includes/class-backend.php:390
    247247msgid "Show/hide the after text on each price row."
    248248msgstr ""
    249249
    250 #: includes/class-backend.php:384
     250#: includes/class-backend.php:394
    251251msgid "Default after text"
    252252msgstr ""
    253253
    254 #: includes/class-backend.php:390
     254#: includes/class-backend.php:400
    255255msgid "You can use [p] for percentage discount, [a] for amount discount. E.g: (saved [p])"
    256256msgstr ""
    257257
    258 #: includes/class-backend.php:395
     258#: includes/class-backend.php:405
    259259msgid "Pricing table"
    260260msgstr ""
    261261
    262 #: includes/class-backend.php:399
    263 #: includes/class-backend.php:448
    264 #: includes/class-backend.php:591
     262#: includes/class-backend.php:409
     263#: includes/class-backend.php:467
     264#: includes/class-backend.php:619
    265265msgid "import / export"
    266266msgstr ""
    267267
    268 #: includes/class-backend.php:457
    269 #: includes/templates/role-price.php:117
     268#: includes/class-backend.php:476
     269#: includes/templates/role-price.php:112
    270270msgid "Default Table"
    271271msgstr ""
    272272
    273 #: includes/class-backend.php:459
    274 #: includes/class-backend.php:537
     273#: includes/class-backend.php:478
     274#: includes/class-backend.php:556
    275275msgid "Leave blank to use the default text and its equivalent translation in multiple languages."
    276276msgstr ""
    277277
    278 #: includes/class-backend.php:463
    279 #: includes/class-backend.php:468
    280 #: includes/class-backend.php:746
     278#: includes/class-backend.php:482
     279#: includes/class-backend.php:487
     280#: includes/class-backend.php:775
     281#: includes/class-frontend.php:380
     282#: includes/templates/role-price.php:134
     283msgid "Quantity"
     284msgstr ""
     285
     286#: includes/class-backend.php:492
     287#: includes/class-backend.php:497
     288#: includes/class-backend.php:776
     289#: includes/class-backend.php:859
    281290#: includes/class-frontend.php:381
    282 #: includes/templates/role-price.php:139
    283 msgid "Quantity"
    284 msgstr ""
    285 
    286 #: includes/class-backend.php:473
    287 #: includes/class-backend.php:478
    288 #: includes/class-backend.php:747
    289 #: includes/class-backend.php:830
    290 #: includes/class-frontend.php:382
    291 #: includes/templates/role-price.php:146
     291#: includes/templates/role-price.php:141
    292292msgid "Price"
    293293msgstr ""
    294294
    295 #: includes/class-backend.php:483
    296 #: includes/class-backend.php:488
    297 #: includes/class-frontend.php:384
     295#: includes/class-backend.php:502
     296#: includes/class-backend.php:507
     297#: includes/class-frontend.php:383
    298298msgid "Tier Total"
    299299msgstr ""
    300300
    301 #: includes/class-backend.php:493
     301#: includes/class-backend.php:512
    302302msgid "Min outliers"
    303303msgstr ""
    304304
    305 #: includes/class-backend.php:498
     305#: includes/class-backend.php:517
    306306#: includes/class-frontend.php:190
    307 #: includes/class-frontend.php:396
     307#: includes/class-frontend.php:395
    308308msgid "<{min}"
    309309msgstr ""
    310310
    311 #: includes/class-backend.php:500
     311#: includes/class-backend.php:519
    312312msgid "Values smaller than min."
    313313msgstr ""
    314314
    315 #: includes/class-backend.php:504
     315#: includes/class-backend.php:523
    316316msgid "Single value"
    317317msgstr ""
    318318
    319 #: includes/class-backend.php:509
    320 #: includes/class-frontend.php:267
    321 #: includes/class-frontend.php:474
     319#: includes/class-backend.php:528
     320#: includes/class-frontend.php:266
     321#: includes/class-frontend.php:472
    322322msgid "{single}"
    323323msgstr ""
    324324
    325 #: includes/class-backend.php:514
     325#: includes/class-backend.php:533
    326326msgid "Values between min and max"
    327327msgstr ""
    328328
    329 #: includes/class-backend.php:519
    330 #: includes/class-frontend.php:258
    331 #: includes/class-frontend.php:465
     329#: includes/class-backend.php:538
     330#: includes/class-frontend.php:257
     331#: includes/class-frontend.php:463
    332332msgid "{from} - {to}"
    333333msgstr ""
    334334
    335 #: includes/class-backend.php:524
     335#: includes/class-backend.php:543
    336336msgid "Max & outliers"
    337337msgstr ""
    338338
    339 #: includes/class-backend.php:529
    340 #: includes/class-frontend.php:246
    341 #: includes/class-frontend.php:453
     339#: includes/class-backend.php:548
     340#: includes/class-frontend.php:245
     341#: includes/class-frontend.php:451
    342342msgid "{max}+"
    343343msgstr ""
    344344
    345 #: includes/class-backend.php:531
     345#: includes/class-backend.php:550
    346346msgid "Max quantity and larger values."
    347347msgstr ""
    348348
    349 #: includes/class-backend.php:535
    350 #: includes/templates/role-price.php:118
     349#: includes/class-backend.php:554
     350#: includes/templates/role-price.php:113
    351351msgid "Quick Buy Table"
    352352msgstr ""
    353353
    354 #: includes/class-backend.php:541
     354#: includes/class-backend.php:560
    355355msgid "Item quantity (singular)"
    356356msgstr ""
    357357
    358358#. translators: qty
    359 #: includes/class-backend.php:548
    360 #: includes/class-frontend.php:353
     359#: includes/class-backend.php:567
     360#: includes/class-frontend.php:352
    361361#, php-format
    362362msgid "%s item"
    363363msgstr ""
    364364
    365 #: includes/class-backend.php:552
     365#: includes/class-backend.php:571
    366366msgid "Item quantity (plural)"
    367367msgstr ""
    368368
    369369#. translators: qty
    370 #: includes/class-backend.php:559
    371 #: includes/class-frontend.php:353
     370#: includes/class-backend.php:578
     371#: includes/class-frontend.php:352
    372372#, php-format
    373373msgid "%s items"
    374374msgstr ""
    375375
    376 #: includes/class-backend.php:563
     376#: includes/class-backend.php:582
    377377msgid "Item price"
    378378msgstr ""
    379379
    380380#. translators: price
    381 #: includes/class-backend.php:570
    382 #: includes/class-frontend.php:360
     381#: includes/class-backend.php:589
     382#: includes/class-frontend.php:359
    383383#, php-format
    384384msgid "%s for each product"
    385385msgstr ""
    386386
    387 #: includes/class-backend.php:575
    388 #: includes/class-backend.php:581
    389 #: includes/class-frontend.php:372
     387#: includes/class-backend.php:594
     388#: includes/class-backend.php:600
     389#: includes/class-frontend.php:371
    390390msgid "Add to cart"
    391391msgstr ""
    392392
    393 #: includes/class-backend.php:658
     393#: includes/class-backend.php:686
    394394msgid "Community support"
    395395msgstr ""
    396396
    397 #: includes/class-backend.php:748
    398 #: includes/templates/role-price.php:152
     397#: includes/class-backend.php:777
     398#: includes/templates/role-price.php:147
    399399msgid "Leave empty to use the default text."
    400400msgstr ""
    401401
    402 #: includes/class-backend.php:749
    403 #: includes/templates/role-price.php:53
    404 #: includes/templates/role-price.php:158
     402#: includes/class-backend.php:778
     403#: includes/templates/role-price.php:48
     404#: includes/templates/role-price.php:153
    405405msgid "remove"
    406406msgstr ""
    407407
    408 #: includes/class-backend.php:791
     408#: includes/class-backend.php:820
    409409msgid "Product price:"
    410410msgstr ""
    411411
    412 #: includes/class-backend.php:812
     412#: includes/class-backend.php:841
    413413#: includes/templates/add-new.php:12
    414 #: includes/templates/role-price.php:26
    415 #: includes/templates/role-price.php:38
     414#: includes/templates/role-price.php:20
     415#: includes/templates/role-price.php:32
    416416msgid "All"
    417417msgstr ""
    418418
    419 #: includes/class-backend.php:815
     419#: includes/class-backend.php:844
    420420msgid "User role:"
    421421msgstr ""
    422422
    423 #: includes/class-backend.php:819
    424 #: includes/class-backend.php:821
     423#: includes/class-backend.php:848
     424#: includes/class-backend.php:850
    425425msgid "Apply for:"
    426426msgstr ""
    427427
    428 #: includes/class-backend.php:819
     428#: includes/class-backend.php:848
    429429msgid "all products"
    430430msgstr ""
    431431
    432 #: includes/class-backend.php:825
     432#: includes/class-backend.php:854
    433433msgid "Pricing method:"
    434434msgstr ""
    435435
    436 #: includes/class-backend.php:826
     436#: includes/class-backend.php:855
    437437msgid "Layout:"
    438438msgstr ""
    439439
    440 #: includes/class-backend.php:829
    441 #: includes/class-backend.php:845
    442 #: includes/templates/role-price.php:125
     440#: includes/class-backend.php:858
     441#: includes/class-backend.php:874
     442#: includes/templates/role-price.php:120
    443443msgid "Quantity-based pricing options"
    444444msgstr ""
    445445
    446 #: includes/class-backend.php:830
     446#: includes/class-backend.php:859
    447447msgid "Qty"
    448448msgstr ""
    449449
    450 #: includes/class-backend.php:830
     450#: includes/class-backend.php:859
    451451msgid "Text"
    452452msgstr ""
    453453
    454 #: includes/class-backend.php:845
     454#: includes/class-backend.php:874
    455455msgid "Not set"
    456456msgstr ""
    457457
    458 #: includes/class-frontend.php:558
     458#: includes/class-frontend.php:556
    459459msgid "Before price table"
    460460msgstr ""
    461461
    462 #: includes/class-frontend.php:559
     462#: includes/class-frontend.php:557
    463463msgid "After price table"
    464464msgstr ""
    465465
    466466#: includes/templates/add-new.php:13
    467 #: includes/templates/role-price.php:30
     467#: includes/templates/role-price.php:24
    468468msgid "User (logged in)"
    469469msgstr ""
    470470
    471471#: includes/templates/add-new.php:14
    472 #: includes/templates/role-price.php:34
     472#: includes/templates/role-price.php:28
    473473msgid "Guest (not logged in)"
    474474msgstr ""
     
    478478msgstr ""
    479479
    480 #: includes/templates/role-price.php:49
     480#: includes/templates/role-price.php:44
    481481msgid "move"
    482482msgstr ""
    483483
     484#: includes/templates/role-price.php:47
     485msgid "duplicate"
     486msgstr ""
     487
    484488#: includes/templates/role-price.php:52
    485 msgid "duplicate"
    486 msgstr ""
    487 
    488 #: includes/templates/role-price.php:57
    489489msgid "Apply for"
    490490msgstr ""
    491491
    492 #: includes/templates/role-price.php:63
     492#: includes/templates/role-price.php:58
    493493msgid "All products"
    494494msgstr ""
    495495
    496 #: includes/templates/role-price.php:65
     496#: includes/templates/role-price.php:60
    497497msgid "Selected products (Premium)"
    498498msgstr ""
    499499
    500 #: includes/templates/role-price.php:73
     500#: includes/templates/role-price.php:68
    501501msgid "Exclude on-sale products"
    502502msgstr ""
    503503
    504 #: includes/templates/role-price.php:98
     504#: includes/templates/role-price.php:93
    505505msgid "Pricing method"
    506506msgstr ""
    507507
    508 #: includes/templates/role-price.php:101
     508#: includes/templates/role-price.php:96
    509509msgid "Volume pricing: One unit price only that is corresponding to the quantity level will be applied. &#10; Tiered pricing: Multiple unit prices will be applied when the selected quantity covers over the tiers."
    510510msgstr ""
    511511
    512 #: includes/templates/role-price.php:104
     512#: includes/templates/role-price.php:99
    513513msgid "Volume pricing"
    514514msgstr ""
    515515
    516 #: includes/templates/role-price.php:105
     516#: includes/templates/role-price.php:100
    517517msgid "Tiered pricing"
    518518msgstr ""
    519519
    520 #: includes/templates/role-price.php:111
     520#: includes/templates/role-price.php:106
    521521msgid "Layout"
    522522msgstr ""
    523523
     524#: includes/templates/role-price.php:109
     525msgid "Choose the layout for the pricing table on a single product page."
     526msgstr ""
     527
    524528#: includes/templates/role-price.php:114
    525 msgid "Choose the layout for the pricing table on a single product page."
    526 msgstr ""
    527 
    528 #: includes/templates/role-price.php:119
    529529msgid "Compact"
    530530msgstr ""
    531531
    532 #: includes/templates/role-price.php:127
     532#: includes/templates/role-price.php:122
    533533msgid "Set the price in numbers and the following characters: + / - / %. &#10; For example: &#10; +2: Increase the product price by 2 &#10; -5: Decrease the product price by 5 &#10; 10: Set the new product price as 10 &#10; 90%: Set the new product price as 90% of the original price."
    534534msgstr ""
    535535
    536 #: includes/templates/role-price.php:168
     536#: includes/templates/role-price.php:163
    537537msgid "+ New row"
    538538msgstr ""
  • wpc-price-by-quantity/trunk/readme.txt

    r3473223 r3486551  
    44Tags: woocommerce, wpc, quantity, tiered pricing, volume pricing
    55Tested up to: 6.9
    6 Version: 5.3.8
    7 Stable tag: 5.3.8
     6Version: 5.3.9
     7Stable tag: 5.3.9
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    115115== Changelog ==
    116116
     117= 5.3.9 =
     118* Fixed: Minor CSS/JS issues in the backend
     119* Updated: Compatible with WP 6.9 & Woo 10.6
     120
    117121= 5.3.8 =
    118122* Updated: Optimized the code
  • wpc-price-by-quantity/trunk/wpc-price-by-quantity.php

    r3473223 r3486551  
    44Plugin URI: https://wpclever.net/
    55Description: Offering quantity-based prices would be one of the most effective and powerful methods to urge buyers with very few convincing actions needed.
    6 Version: 5.3.8
     6Version: 5.3.9
    77Author: WPClever
    88Author URI: https://wpclever.net
     
    1313Tested up to: 6.9
    1414WC requires at least: 3.0
    15 WC tested up to: 10.5
     15WC tested up to: 10.6
    1616License: GPLv2 or later
    1717License URI: http://www.gnu.org/licenses/gpl-2.0.html
    1818*/
    1919
    20 ! defined( 'WPCPQ_VERSION' ) && define( 'WPCPQ_VERSION', '5.3.8' );
     20! defined( 'WPCPQ_VERSION' ) && define( 'WPCPQ_VERSION', '5.3.9' );
    2121! defined( 'WPCPQ_LITE' ) && define( 'WPCPQ_LITE', __FILE__ );
    2222! defined( 'WPCPQ_FILE' ) && define( 'WPCPQ_FILE', __FILE__ );
     
    2929! defined( 'WPC_URI' ) && define( 'WPC_URI', WPCPQ_URI );
    3030
     31include 'includes/log/wpc-log.php';
    3132include 'includes/dashboard/wpc-dashboard.php';
    3233include 'includes/kit/wpc-kit.php';
Note: See TracChangeset for help on using the changeset viewer.