You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
cosmopet.ae/wp-content/plugins copy/wp-all-export/libraries/XmlGoogleMerchants.php

161 lines
3.9 KiB

<?php
/**
* Class XmlGoogleMerchants
*/
final class XmlGoogleMerchants
{
/**
* @var bool
*/
private $export_id = false;
/**
* @var array
*/
private $add_data = array();
/**
* @var array
*
* https://support.google.com/merchants/answer/160589?hl=en
*
*/
private $required_fields = array(
array(
'name' => 'g:id',
'type' => 'ID',
// 'label' => 'id'
),
array(
'name' => 'title',
'type' => 'Title',
// 'label' => 'title'
),
array(
'name' => 'link',
'type' => 'Permalink',
// 'label' => 'permalink'
),
array(
'name' => 'description',
'type' => 'Content',
// 'label' => 'content'
),
array(
'name' => 'g:image_link',
'type' => 'Image Url',
// 'options' => '{"is_export_featured":true,"is_export_attached":false,"image_separator":"|"}'
),
array(
'name' => 'g:price',
'type' => 'Regular Price',
),
// array(
// 'name' => 'g:condition',
// 'type' => 'woo',
// 'label' => '_regular_price'
// )
);
/**
* XmlGoogleMerchants constructor.
* @param $id
* @param array $additional_data
*/
public function __construct($id, $additional_data = array())
{
$this->export_id = $id;
$this->add_data = $additional_data;
if ( ! empty($this->export_id))
{
add_filter('wp_all_export_xml_header', array( &$this, 'wpae_xml_header'), 10, 2);
add_filter('wp_all_export_additional_data', array( &$this, 'wpae_additional_data'), 10, 3);
add_filter('wp_all_export_xml_footer', array( &$this, 'wpae_xml_footer'), 10, 2);
add_filter('wp_all_export_main_xml_tag', array( &$this, 'wpae_main_xml_tag'), 10, 2);
add_filter('wp_all_export_record_xml_tag', array( &$this, 'wpae_record_xml_tag'), 10, 2);
}
}
/**
* @param $header
* @param $export_id
* @return string
*/
public function wpae_xml_header($header, $export_id)
{
if ( $export_id == $this->export_id )
{
$header .= "\n<rss version=\"2.0\" xmlns:g=\"http://base.google.com/ns/1.0\">";
}
return $header;
}
/**
* @param $add_data
* @param $options
* @param $export_id
* @return array
*/
public function wpae_additional_data($add_data, $options, $export_id)
{
if ( $export_id == $this->export_id && ! empty($this->add_data))
{
$add_data = array_merge($add_data, $this->add_data);
}
return $add_data;
}
/**
* @param $footer
* @param $export_id
* @return string
*/
public function wpae_xml_footer($footer, $export_id)
{
if ( $export_id == $this->export_id )
{
$footer = "</rss>";
}
return $footer;
}
/**
* @param $tag
* @param $export_id
* @return string
*/
public function wpae_main_xml_tag($tag, $export_id )
{
return ( $export_id == $this->export_id ) ? 'channel' : $tag;
}
/**
* @param $tag
* @param $export_id
* @return string
*/
public function wpae_record_xml_tag($tag, $export_id )
{
return ( $export_id == $this->export_id ) ? 'item' : $tag;
}
/**
*
*/
public function get_required_fields()
{
$xml_template = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:g=\"http://base.google.com/ns/1.0\">\n";
$xml_template .= "\t<chanel>";
$xml_template .= "\n\t\t<!-- BEGIN LOOP -->";
$xml_template .= "\n\t\t<item>";
foreach ($this->required_fields as $field){
$xml_template .= "\n\t\t\t<" . $field['name'] . ">{" . $field['type'] . "}</" . $field['name'] . ">";
}
$xml_template .= "\n\t\t</item>";
$xml_template .= "\n\t\t<!-- END LOOP -->";
$xml_template .= "\n\t</chanel>";
$xml_template .= "\n</rss>";
return $xml_template;
}
}