analytics();
}
/**
* Get Facebook analyticts scripts.
*
* @since 1.1.0
*/
public function analytics() {
$fb_tracking_id = esc_attr( sellkit_get_option( 'facebook_pixel_id' ) );
if ( empty( $fb_tracking_id ) || empty( sellkit_get_option( 'facebook_pixel' ) ) ) {
return;
}
// phpcs:disable
$facebook_script =
"
";
// phpcs:enable
$facebook_script .= $this->facebook_pixel_events( self::$post, $fb_tracking_id );
echo $facebook_script; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Inline pixel script; tracking IDs escaped with esc_js.
}
/**
* Facebook pixel events scripts.
*
* @since 1.1.0
* @param array $post_meta sellkit pages data.
* @param string $tracking_id fb pixel tracking id.
*/
private function facebook_pixel_events( $post_meta, $tracking_id ) {
$fb_pixel_events = sellkit_get_option( 'facebook_pixel_events' );
if ( empty( $fb_pixel_events ) ) {
return;
}
$first_index = array_key_first( $post_meta );
$sellkit_page_meta = $post_meta[ $first_index ]['type']['key'];
$fb_events_script = '';
foreach ( $fb_pixel_events as $event ) {
$function_name = "fb_pixel_{$event}";
$fb_events_script .= $this->$function_name( $sellkit_page_meta, $tracking_id );
}
return $fb_events_script;
}
/**
* Get facebook pixel initiate_checkout data.
*
* @since 1.1.0
* @param string $sellkit_page_meta sellkit pages type.
* @SuppressWarnings(PHPMD.UnusedPrivateMethod)
*/
private function fb_pixel_initiate_checkout( $sellkit_page_meta ) {
if ( 'checkout' !== $sellkit_page_meta ) {
return;
}
$cart_content = $this->get_cart_data( 'add_to_cart' );
$initiate_checkout = $this->get_cart_data( 'initiate_checkout' );
$fb_events_script =
"";
return $fb_events_script;
}
/**
* Get facebook pixel add_payment_info data.
*
* @since 1.1.0
* @param string $sellkit_page_meta sellkit pages type.
* @SuppressWarnings(PHPMD.UnusedPrivateMethod)
*/
private function fb_pixel_add_payment_info( $sellkit_page_meta ) {
if ( 'checkout' !== $sellkit_page_meta ) {
return;
}
$cart_content = $this->get_cart_data( 'add_payment_info' );
self::$localized_data['fbAddPaymentInfo'] = $cart_content;
}
/**
* Get facebook pixel purchage_complete data.
*
* @since 1.1.0
* @param string $sellkit_page_meta sellkit pages type.
* @SuppressWarnings(PHPMD.UnusedPrivateMethod)
*/
private function fb_pixel_purchace_complete( $sellkit_page_meta ) {
if ( 'thankyou' !== $sellkit_page_meta ) {
return;
}
$order_content = $this->get_order_data();
$fb_events_script =
"";
return $fb_events_script;
}
/**
* Get cart data.
*
* @since 1.1.0
* @param string $event Filter fb pixel tracking id.
*/
private function get_cart_data( $event ) {
$cart_data = [];
$products = [];
if ( ! sellkit()->has_valid_dependencies() ) {
return wp_json_encode( [] );
}
$cart_total = WC()->cart->cart_contents_total + WC()->cart->tax_total;
$products = $this->get_products_data( WC()->cart->get_cart(), 'fb' );
$product_name = isset( $products['products_name'] ) ? substr( $products['products_name'], 2 ) : '';
$category_name = isset( $products['categories_name'] ) ? substr( $products['categories_name'], 2 ) : '';
$content_name = isset( $products['cart_contents'] ) ? wp_json_encode( $products['cart_contents'] ) : '';
$cart_data = [
'content_type' => 'product',
'plugin' => 'Sellkit',
'value' => number_format( floatval( $cart_total ), wc_get_price_decimals(), '.', '' ),
'content_name' => $product_name,
'content_category' => $category_name,
'contents' => $content_name,
'currency' => get_woocommerce_currency(),
'user_roles' => implode( ', ', wp_get_current_user()->roles ),
];
if ( 'add_to_cart' === $event ) {
$cart_items_count = WC()->cart->get_cart_contents_count();
$cart_data = array_merge(
$cart_data,
[
'num_items' => $cart_items_count,
'domain' => get_site_url(),
'language' => get_bloginfo( 'language' ),
'userAgent' => wp_unslash( $_SERVER['HTTP_USER_AGENT'] ), //phpcs:ignore
]
);
return wp_json_encode( $cart_data );
}
return wp_json_encode( $cart_data );
}
/**
* Get purchase data.
*
* @since 1.1.0
*/
private function get_order_data() {
if ( empty( self::$order_key ) ) {
return;
}
$order_id = wc_get_order_id_by_order_key( self::$order_key );
$order = wc_get_order( $order_id );
$products = $this->get_products_data( $order->get_items(), 'fb' );
$purchase_data = [
'transaction_id' => $order_id,
'content_type' => 'product',
'currency' => $order->get_currency(),
'userAgent' => wp_unslash( $_SERVER['HTTP_USER_AGENT'] ), //phpcs:ignore
'plugin' => 'Sellkit',
'value' => number_format( $order->get_total(), wc_get_price_decimals(), '.', '' ),
];
if ( ! empty( $products ) ) {
$purchase_data = array_merge(
$purchase_data,
[
'content_ids' => $products['content_ids'],
'content_names' => $products['products_name'],
'content_category' => $products['categories_name'],
]
);
}
return wp_json_encode( $purchase_data );
}
}
Facebook::get_instance();