File "class-wc-attributes.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/seo-by-rank-math/includes/modules/schema/snippets/class-wc-attributes.php
File
size: 1.54 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
/**
* Helper class for handling WooComerce product attributes for rich snippets.
*
* @since 0.9.0
* @package RankMath
* @subpackage RankMath\Schema
* @author Rank Math <[email protected]>
*/
namespace RankMath\Schema;
defined( 'ABSPATH' ) || exit;
/**
* WC_Attributes class.
*/
class WC_Attributes {
/**
* Hold product attributes.
*
* @var array
*/
private $_attributes;
/**
* Hold product object.
*
* @var WC_Product
*/
private $_product;
/**
* The Constructor.
*
* @param WC_Product $product The Product.
*/
public function __construct( $product ) {
$this->_product = $product;
$this->_attributes = $product->get_attributes();
}
/**
* Find attribute for property.
*
* @param array $entity Entity to attach data to.
* @param string $needle Assign this property.
*/
public function assign_property( &$entity, $needle ) {
foreach ( $this->_attributes as $key => $attrib ) {
if ( stristr( $key, $needle ) ) {
$entity[ $needle ] = $this->_product->get_attribute( $key );
unset( $this->_attributes[ $key ] );
return;
}
}
}
/**
* Map remaining attributes as PropertyValue.
*
* @param array $entity Entity to attach data to.
*/
public function assign_remaining( &$entity ) {
foreach ( $this->_attributes as $key => $attrib ) {
if ( $attrib['is_visible'] && ! $attrib['is_variation'] ) {
$entity['additionalProperty'][] = [
'@type' => 'PropertyValue',
'name' => $key,
'value' => $this->_product->get_attribute( $key ),
];
}
}
}
}