';
}
}
/**
* @param boolen $has_orders Order exist or not.
*
* @return void
*/
public static function before_account_orders( $has_orders ) {
if ( ! $has_orders ) {
echo '
';
}
}
/**
* @return void
*/
public static function woocommerce_checkout_coupon_form() {
echo '
';
woocommerce_checkout_coupon_form();
echo '
';
}
/**
* @return void
*/
public static function woocommerce_checkout_login_form() {
echo '
';
woocommerce_checkout_login_form();
echo '
';
}
/**
* @return void
*/
public static function cart_is_empty() {
echo '
';
wc_empty_cart_message();
echo '
';
}
/**
* @param int $post_id Post Ids.
* @param object $post Post Object.
*
* @return void
*/
public static function deleted_post( $post_id, $post ) {
if ( BuilderFns::$post_type_tb !== $post->post_type ) {
return;
}
$options = BuilderFns::option_name_for_specific_product_set_default( $post_id );
TemplateSettings::instance()->delete_option( $options );
$template_options = BuilderFns::option_name_by_template_id( $post_id );
TemplateSettings::instance()->delete_option( $template_options );
$archive_options = BuilderFns::archive_option_name_by_template_id( $post_id );
TemplateSettings::instance()->delete_option( $archive_options );
$category_options = BuilderFns::option_name_for_specific_category_set_default( $post_id );
TemplateSettings::instance()->delete_option( $category_options );
$selected_category_options = BuilderFns::archive_option_name_by_template_id( $post_id );
TemplateSettings::instance()->delete_option( $selected_category_options );
// Delete Data From Options.
$options_product_selected_cat = BuilderFns::option_name_product_page_selected_cat( $post_id );
$cat_list = TemplateSettings::instance()->get_option( $options_product_selected_cat );
if ( ! empty( $cat_list ) ) {
foreach ( $cat_list as $old_slug ) {
$OldcatList = get_term_by( 'slug', $old_slug, 'product_cat' );
if ( ! empty( $OldcatList ) && ! is_wp_error( $OldcatList ) ) {
delete_term_meta( $OldcatList->term_id, BuilderFns::$categories_product_page_template, $post_id );
}
}
}
TemplateSettings::instance()->delete_option( $options_product_selected_cat );
$set_default_option = BuilderFns::option_name_product_page_specific_cat_set_default( $post_id );
TemplateSettings::instance()->delete_option( $set_default_option );
// Tags Remove.
$options_product_selected_tag = BuilderFns::option_name_product_page_selected_tag( $post_id );
$tag_list = TemplateSettings::instance()->get_option( $options_product_selected_tag );
if ( ! empty( $tag_list ) ) {
foreach ( $tag_list as $old_slug ) {
$OldTagList = get_term_by( 'slug', $old_slug, 'product_tag' );
if ( ! empty( $OldTagList ) && ! is_wp_error( $OldTagList ) ) {
delete_term_meta( $OldTagList->term_id, BuilderFns::$tags_product_page_template, $post_id );
}
}
}
TemplateSettings::instance()->delete_option( $options_product_selected_tag );
// Tag Set Default Option.
$tag_set_default_option = BuilderFns::option_name_product_page_specific_tag_set_default( $post_id );
TemplateSettings::instance()->delete_option( $tag_set_default_option );
global $wpdb;
// Prepare and execute the SQL query.
$sql = $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_key = %s AND meta_value = %d", BuilderFns::$view_template_for_products_meta, $post_id );
$wpdb->query( $sql ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching
// Prepare and execute the SQL query.
$sql = $wpdb->prepare( "DELETE FROM $wpdb->termmeta WHERE meta_key = %s AND meta_value = %d", BuilderFns::$view_template_for_archive_meta, $post_id );
$wpdb->query( $sql ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching
}
/**
* Meta tags for social sharing.
*
* @return void
*/
public static function shopbuilder_share() {
$generalList = GeneralList::instance()->get_data();
if (
empty( $generalList['social_share']['share_platforms_to_product_page'] ) ||
'on' !== $generalList['social_share']['share_platforms_to_product_page'] ||
empty( $generalList['social_share']['share_platforms'] )
) {
return;
}
$share_platforms = [];
foreach ( $generalList['social_share']['share_platforms'] as $value ) {
$share_platforms[ $value ] = [
'share_items' => $value,
'share_text' => ucwords( $value ),
];
}
$settings['share_platforms'] = $share_platforms;
$settings['layout'] = ! empty( $generalList['social_share']['share_icon_layout'] ) ? $generalList['social_share']['share_icon_layout'] : 1;
$settings['show_share_icon'] = 1;
// TODO:: Implement Later ! empty( $generalList['social_share']['share_icon_show_to_product_page'] ) && 'on' === $generalList['social_share']['share_icon_show_to_product_page'];
Fns::print_html( Render::instance()->social_share_view( 'elementor/general/social-share', $settings ), true );
}
/**
* Meta tags for social sharing.
*
* @return void
*/
public static function og_metatags_for_sharing() {
global $post;
if ( ! isset( $post ) ) {
return;
}
if ( ! is_singular( 'product' ) ) {
return;
}
Fns::print_html( '
', true );
Fns::print_html( '
', true );
Fns::print_html( '
', true );
Fns::print_html( '
' );
$attachment = get_the_post_thumbnail_url();
if ( ! empty( $attachment ) ) {
Fns::print_html( '
', true );
}
Fns::print_html( '
', true );
Fns::print_html( '
', true );
}
/**
* Render image.
*
* @param array $args Image args.
* @param array $settings Settings array.
*
* @return void
*/
public static function render_image( $args, $settings ) {
if ( $args['image_link'] ) {
$aria_label = esc_attr(
/* translators: Product Name */
sprintf( __( 'Image link for Product: %s', 'shopbuilder' ), $args['title'] )
);
?>
';
Fns::get_product_image( $args['img_html'], $args['hover_img_html'] );
echo '';
}
}
/**
* Modify WooCommerce query arguments for product retrieval.
*
* @param array $settings The settings array.
*
* @return void
*/
public static function modify_wc_query_args( $settings ) {
if ( ( isset( $settings['tax_relation'] ) && 'OR' === $settings['tax_relation'] ) ||
( isset( $settings['relation'] ) && 'OR' === $settings['relation'] ) ) {
add_filter( 'woocommerce_product_data_store_cpt_get_products_query', [ FilterHooks::class, 'extra_query_args' ], 10, 2 );
}
if ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ) {
add_filter( 'woocommerce_product_data_store_cpt_get_products_query', [ FilterHooks::class, 'extra_query_args_outofstock' ] );
}
}
/**
* Reset WooCommerce query arguments for product retrieval.
*
* @param array $settings The settings array.
*
* @return void
*/
public static function reset_wc_query_args( $settings ) {
if ( ( isset( $settings['tax_relation'] ) && 'OR' === $settings['tax_relation'] ) ||
( isset( $settings['relation'] ) && 'OR' === $settings['relation'] ) ) {
remove_filter( 'woocommerce_product_data_store_cpt_get_products_query', [ FilterHooks::class, 'extra_query_args' ] );
}
if ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ) {
remove_filter( 'woocommerce_product_data_store_cpt_get_products_query', [ FilterHooks::class, 'extra_query_args_outofstock' ] );
}
}
}