Usage
This function runs automatically, so it is not called manually. Is this incorrect?
Source File
Located in /libs/Ecommerce.php on line 279.
1 Hook
Find these filters and actions in the source code below to hook into them. Use do_action() and add_filter() in your functions file or plugin.
Filters
"pre_nebula_json_ld_ecommerce"Need a new filter hook? Request one here.
Actions
This function has no action hooks available. Request one?
PHP
public function json_ld_ecommerce(){
$override = apply_filters('pre_nebula_json_ld_ecommerce', false);
if ( !empty($override) ){echo $override; return;}
if ( function_exists('is_product') && is_product() ){ //if is product
global $post;
$product = new WC_Product($post->ID);
$company_type = ( $this->get_option('business_type') )? $this->get_option('business_type') : 'LocalBusiness';
?>
<script type="application/ld+json">
{
"@context": "http://schema.org/",
"@type": "Product",
"name": "<?php echo esc_html(get_the_title()); ?>",
<?php $post_thumbnail_meta = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'full'); ?>
"image": {
"@type": "ImageObject",
"url": "<?php echo $post_thumbnail_meta[0]; ?>",
"width": "<?php echo $post_thumbnail_meta[1]; ?>",
"height": "<?php echo $post_thumbnail_meta[2]; ?>"
},
"description": <?php echo wp_json_encode($this->excerpt(array('words' => 100, 'more' => '', 'ellipsis' => false, 'structured' => false))); ?>,
"offers": {
"@type": "Offer",
"priceCurrency": "<?php echo get_woocommerce_currency(); ?>",
"price": "<?php echo $product->price; ?>",
"itemCondition": "http://schema.org/NewCondition",
"availability": "<?php echo ( $product->is_in_stock() )? 'http://schema.org/InStock' : 'http://schema.org/OutOfStock'; ?>",
"seller": {
"@type": "<?php echo $company_type; ?>",
"name": "<?php echo ( $this->get_option('site_owner') )? $this->get_option('site_owner') : get_bloginfo('name'); ?>",
"image": "<?php echo get_theme_file_uri('/assets/img/logo.png'); ?>",
"telephone": "+<?php echo $this->get_option('phone_number', ''); ?>",
<?php if ( $company_type === 'LocalBusiness' ): ?>
"priceRange": "",
<?php endif; ?>
"address": {
"@type": "PostalAddress",
"streetAddress": "<?php echo $this->get_option('street_address', ''); ?>",
"addressLocality": "<?php echo $this->get_option('locality', ''); ?>",
"addressRegion": "<?php echo $this->get_option('region', ''); ?>",
"postalCode": "<?php echo $this->get_option('postal_code', ''); ?>",
"addressCountry": "<?php echo $this->get_option('country_name', ''); ?>"
}
}
}
}
</script>
<?php
}
}
Override
To override this PHP function, use this hook in your child theme or plugin ("my_custom" can be changed):
PHP
add_filter('pre_nebula_json_ld_ecommerce', 'my_custom_json_ld_ecommerce');
function my_custom_json_ld_ecommerce(){
//Write your own code here
return true; //Return true to prevent the original function from running afterwords
}
You can completely disable this PHP function with a single line actions:
PHP
add_filter('pre_nebula_json_ld_ecommerce', '__return_false');