woothemes/woocommerce

View on GitHub
includes/class-wc-product-simple.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/**
 * Simple Product Class.
 *
 * The default product type kinda product.
 *
 * @package WooCommerce\Classes\Products
 */

defined( 'ABSPATH' ) || exit;

/**
 * Simple product class.
 */
class WC_Product_Simple extends WC_Product {

    /**
     * Initialize simple product.
     *
     * @param WC_Product|int $product Product instance or ID.
     */
    public function __construct( $product = 0 ) {
        $this->supports[] = 'ajax_add_to_cart';
        parent::__construct( $product );
    }

    /**
     * Get internal type.
     *
     * @return string
     */
    public function get_type() {
        return 'simple';
    }

    /**
     * Get the add to url used mainly in loops.
     *
     * @return string
     */
    public function add_to_cart_url() {
        $url = $this->is_purchasable() && $this->is_in_stock() ? remove_query_arg(
            'added-to-cart',
            add_query_arg(
                array(
                    'add-to-cart' => $this->get_id(),
                ),
                ( function_exists( 'is_feed' ) && is_feed() ) || ( function_exists( 'is_404' ) && is_404() ) ? $this->get_permalink() : ''
            )
        ) : $this->get_permalink();
        return apply_filters( 'woocommerce_product_add_to_cart_url', $url, $this );
    }

    /**
     * Get the add to cart button text.
     *
     * @return string
     */
    public function add_to_cart_text() {
        $text = $this->is_purchasable() && $this->is_in_stock() ? __( 'Add to cart', 'woocommerce' ) : __( 'Read more', 'woocommerce' );

        return apply_filters( 'woocommerce_product_add_to_cart_text', $text, $this );
    }

    /**
     * Get the add to cart button text description - used in aria tags.
     *
     * @since 3.3.0
     * @return string
     */
    public function add_to_cart_description() {
        /* translators: %s: Product title */
        $text = $this->is_purchasable() && $this->is_in_stock() ? __( 'Add &ldquo;%s&rdquo; to your cart', 'woocommerce' ) : __( 'Read more about &ldquo;%s&rdquo;', 'woocommerce' );

        return apply_filters( 'woocommerce_product_add_to_cart_description', sprintf( $text, $this->get_name() ), $this );
    }
}