You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
3.3 KiB
PHP
150 lines
3.3 KiB
PHP
<?php
|
|
/**
|
|
* Register additional variables for WooCommerce.
|
|
*
|
|
* @since 1.0.32
|
|
* @package RankMath
|
|
* @subpackage RankMath\WooCommerce
|
|
* @author Rank Math <support@rankmath.com>
|
|
*/
|
|
|
|
namespace RankMath\WooCommerce;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/**
|
|
* WC Variables class.
|
|
*/
|
|
class WC_Vars extends Opengraph {
|
|
|
|
/**
|
|
* The Constructor.
|
|
*/
|
|
public function __construct() {
|
|
$this->action( 'rank_math/vars/register_extra_replacements', 'register' );
|
|
}
|
|
|
|
/**
|
|
* Registers variable replacements for WooCommerce products.
|
|
*/
|
|
public function register() {
|
|
rank_math_register_var_replacement(
|
|
'wc_price',
|
|
[
|
|
'name' => esc_html__( 'Product\'s price.', 'rank-math' ),
|
|
'description' => esc_html__( 'Product\'s price of the current product', 'rank-math' ),
|
|
'variable' => 'wc_price',
|
|
'example' => $this->get_product_price(),
|
|
],
|
|
[ $this, 'get_product_price' ]
|
|
);
|
|
|
|
rank_math_register_var_replacement(
|
|
'wc_sku',
|
|
[
|
|
'name' => esc_html__( 'Product\'s SKU.', 'rank-math' ),
|
|
'description' => esc_html__( 'Product\'s SKU of the current product', 'rank-math' ),
|
|
'variable' => 'wc_sku',
|
|
'example' => $this->get_product_sku(),
|
|
],
|
|
[ $this, 'get_product_sku' ]
|
|
);
|
|
|
|
rank_math_register_var_replacement(
|
|
'wc_shortdesc',
|
|
[
|
|
'name' => esc_html__( 'Product\'s short description.', 'rank-math' ),
|
|
'description' => esc_html__( 'Product\'s short description of the current product', 'rank-math' ),
|
|
'variable' => 'wc_shortdesc',
|
|
'example' => $this->get_short_description(),
|
|
],
|
|
[ $this, 'get_short_description' ]
|
|
);
|
|
|
|
rank_math_register_var_replacement(
|
|
'wc_brand',
|
|
[
|
|
'name' => esc_html__( 'Product\'s brand.', 'rank-math' ),
|
|
'description' => esc_html__( 'Product\'s brand of the current product', 'rank-math' ),
|
|
'variable' => 'wc_brand',
|
|
'example' => $this->get_product_brand(),
|
|
],
|
|
[ $this, 'get_product_brand' ]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Retrieves the product price.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_product_price() {
|
|
$product = $this->get_product();
|
|
if ( ! is_object( $product ) ) {
|
|
return '';
|
|
}
|
|
|
|
if ( method_exists( $product, 'get_price' ) ) {
|
|
return wp_strip_all_tags( wc_price( $product->get_price() ), true );
|
|
}
|
|
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* Retrieves the product SKU.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_product_sku() {
|
|
$product = $this->get_product();
|
|
if ( ! is_object( $product ) ) {
|
|
return '';
|
|
}
|
|
|
|
if ( method_exists( $product, 'get_sku' ) ) {
|
|
return $product->get_sku();
|
|
}
|
|
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* Checks if product class has a short description method.
|
|
* Otherwise it returns the value of the post_excerpt from the post attribute.
|
|
*
|
|
* @param WC_Product $product The product.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_short_description( $product = null ) {
|
|
if ( empty( $product ) ) {
|
|
$product = $this->get_product();
|
|
}
|
|
|
|
if ( ! is_object( $product ) ) {
|
|
return '';
|
|
}
|
|
|
|
if ( method_exists( $product, 'get_short_description' ) ) {
|
|
return $product->get_short_description();
|
|
}
|
|
|
|
return $product->post->post_excerpt;
|
|
}
|
|
|
|
/**
|
|
* Retrieves the product brand.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_product_brand() {
|
|
$product = $this->get_product();
|
|
if ( ! is_object( $product ) ) {
|
|
return '';
|
|
}
|
|
|
|
return $this->get_brands( $product->get_id() );
|
|
}
|
|
}
|