wake-up-neo.com

Wie wird der Woocommerce-Verkaufspreis oder der reguläre Preis angezeigt, wenn kein Verkaufspreis vorliegt?

Ich verwende ein Add-In-Plug-In für Woocommerce-Produkte, in dem ich den Preis eines Produkts in meinem Dropdown-Bereich der Addons anzeigen möchte. Derzeit ist der Code, den ich habe, dieser

    <?php
$loop = 0;
$current_value = isset( $_POST['addon-' . sanitize_title( $addon['field-name'] ) ] ) ? wc_clean( $_POST[ 'addon-' . sanitize_title( $addon['field-name'] ) ] ) : '';
global $product;
?>
<p class="form-row form-row-wide addon-wrap-<?php echo sanitize_title( $addon['field-name'] ); ?>">
    <select class="addon addon-select" name="addon-<?php echo sanitize_title( $addon['field-name'] ); ?>">

        <?php if ( ! isset( $addon['required'] ) ) : ?>
            <option value=""><?php _e('None', 'woocommerce-product-addons'); ?></option>
        <?php else : ?>
            <!--<option value=""><?php _e('Select an option...', 'woocommerce-product-addons'); ?></option>-->
        <?php endif; ?>

        <?php foreach ( $addon['options'] as $i => $option ) :
            $loop ++;
            $price = apply_filters( 'woocommerce_product_addons_option_price',
                $option['price'] > 0 ? ' + ' . wc_price( get_product_addon_price_for_display( $option['price'] ) ) . '' : '',
                $option,
                $i,
                'select'
            );
            ?>
            <option data-raw-price="<?php echo esc_attr( $option['price'] ); ?>" data-price="<?php echo get_product_addon_price_for_display( $option['price'] ); ?>" value="<?php echo sanitize_title( $option['label'] ) . '-' . $loop; ?>" <?php selected( $current_value, sanitize_title( $option['label'] ) . '-' . $loop ); ?>><?php echo wptexturize( $option['label'] . ' (' ); echo balanceTags($product->get_price_html()) . $price ?>)</option>
        <?php endforeach; ?>

    </select>
</p>

Ich benutze dieses Echo

$product->get_price_html()

dies bedeutet jedoch, dass der $ "Verkaufspreis" $ "Preis" angezeigt wird, aber ich möchte nur den Verkaufspreis oder nur den Produktpreis anzeigen, wenn es keinen Verkaufspreis gibt. Wenn ich mir den Code unten anschaue, wie würde ich das erreichen?

7
JPWeb

Ziemlich einfach. Wir werden eine benutzerdefinierte Funktion schreiben, die zuerst sicher ist, ob das Produkt verkauft wird oder nicht. Dann wird der reguläre oder Verkaufspreis basierend auf der zuvor definierten Verkaufsbedingung zurückgegeben. Die Funktion wird also

/**
 * Returns product price based on sales.
 * 
 * @return string
 */
function the_dramatist_price_show() {
    global $product;
    if( $product->is_on_sale() ) {
        return $product->get_sale_price();
    }
    return $product->get_regular_price();
}

Rufen Sie jetzt diese Funktion the_dramatist_price_show() anstelle von $product->get_price_html() auf. Sie erhalten den Preis basierend auf ist verkauft oder nicht ohne Währungssymbol.

Hoffentlich hilft das.

21
CodeMascot

Dieser Artikel hat für mich funktioniert. Sie können diesen auch ausprobieren.

Wenn Sie den regulären Preis oder Verkaufspreis eines Woocommerce-Produkts erhalten möchten und nichts erhalten, müssen Sie Folgendes wissen:

Wenn das Produkt keine Abweichungen aufweist, können Sie den regulären Preis und Verkaufspreis genauso erhalten:

Holen Sie sich den Preis eines einfachen procut

<?php
#the product must be instantiated above like $product = new WC_Product();
echo $product->regular_price;
echo $product->sale_price;
?>

Wenn das Produkt Variationen aufweist, erhalten Sie nichts, wenn Sie den obigen Code verwenden.

Sie müssen die variablen Produktpreise erhalten.

Den Preis eines Produkts mit Variationen erhalten

#1 Get product variations
$product_variations = $product->get_available_variations();

#2 Get one variation id of a product
$variation_product_id = $product_variations [0]['variation_id'];

#3 Create the product object
$variation_product = new WC_Product_Variation( $variation_product_id );

#4 Use the variation product object to get the variation prices
echo $variation_product ->regular_price;
echo $variation_product ->sale_price;

Das sollte alles sein.

Genießen.

Quelle: http://www.w3bdeveloper.com/how-to/how-to-get-regular-price-of-a-product-in-wordpress-woocommerce/

2
Umair Mehmood

Das funktioniert bei mir mit Wordpress 5.1 und WooCommerce 3.5.5:

                $price = get_post_meta( get_the_ID(), '_regular_price', true);
                $price_sale = get_post_meta( get_the_ID(), '_sale_price', true);
                if ($price_sale !== "") {
                    echo $price_sale;
                } else {
                    echo $price;
                }
0
Mike