oont-contents/plugins/webappick-product-feed-for-woocommerce/V5/CustomFields/InputCustomFiled.php
2025-03-31 21:42:48 +02:00

221 lines
7.8 KiB
PHP

<?php
namespace CTXFeed\V5\CustomFields;
use CTXFeed\V5\Compatibility\WCMLCurrency;
use CTXFeed\V5\Helper\CustomFieldHelper;
use CTXFeed\V5\Utility\Settings;
/**
* Class InputCustomFiled
*
* @package CTXFeed
* @subpackage CTXFeed\V5\CustomField
*/
class InputCustomFiled implements CustomFieldInterface {
public function __construct() {
add_action( 'woocommerce_product_options_inventory_product_data', [ $this, 'set_custom_field' ], 10, 3 );
add_action( 'woocommerce_product_after_variable_attributes', [
$this,
'set_custom_field_for_variation'
], 10, 3 );
add_action( 'save_post_product', [ $this, 'save_custom_field_value' ], 10, 2 );
add_action( 'woocommerce_save_product_variation', [ $this, 'save_variation_custom_field_value' ], 10, 2 );
}
/**
* Set Custom Fields for Product.
*
* @return void
*/
public function set_custom_field() {
$custom_field_settings = Settings::get( 'woo_feed_identifier' );
$custom_fields = CustomFieldHelper::get_fields();
if ( ! empty( $custom_field_settings ) && in_array( 'enable', $custom_field_settings, true ) ) {
echo '<div class="options_group">';
echo sprintf( '<h4 class="%s" style="padding-left: 10px;color: black;">%s</h4>', esc_attr( 'woo-feed-option-title' ), esc_html__( 'CUSTOM FIELDS by CTX Feed', 'woo-feed' ) );
foreach ( $custom_fields as $field_Key => $custom_field ) {
if ( isset( $custom_field_settings[ $field_Key ] ) && 'enable' === $custom_field_settings[ $field_Key ] && 'text' === $custom_field[2] ) {
//identifier meta value for old and new version users
$custom_field_key_previous = sprintf( 'woo_feed_identifier_%s', strtolower( $field_Key ) );
$custom_field_value_previous = get_post_meta( get_the_ID(), $custom_field_key_previous, true );
$custom_field_key = sprintf( 'woo_feed_%s', strtolower( $field_Key ) );
$custom_field_value = get_post_meta( get_the_ID(), $custom_field_key, true );
if( empty( $custom_field_value ) && is_plugin_active( 'woocommerce-multilingual/wpml-woocommerce.php' )){
$originalId = apply_filters('woo_feed_original_post_id', get_the_ID() );
$custom_field_value = get_post_meta( $originalId, $custom_field_key, true );
}
if ( empty( $custom_field_value ) && ! empty( $custom_field_value_previous ) ) {
$custom_field_key = $custom_field_key_previous;
$custom_field_value = $custom_field_value_previous;
}
$custom_field_id = esc_attr( wp_unslash( "woo_feed_$field_Key" ) );
$custom_field_label = esc_attr( wp_unslash( $custom_field[0] ) );
$custom_field_description = __( 'Set product ', 'woo-feed' ) . esc_html( $custom_field_label ) . __( ' here.', 'woo-feed' );
woocommerce_wp_text_input(
array(
'id' => $custom_field_id,
'label' => $custom_field_label,
'placeholder' => $custom_field_label,
'desc_tip' => true,
'value' => esc_attr( wp_unslash( $custom_field_value ) ),
'description' => $custom_field_description,
)
);
}
}
echo '</div>';
}
}
/**
* Set Custom Fields for Product Variations.
*
* @param $loop
* @param $variation_data
* @param $variation
*
* @return void
*/
public function set_custom_field_for_variation( $loop, $variation_data, $variation ) {
$custom_field_settings = Settings::get( 'woo_feed_identifier' );
$custom_fields = CustomFieldHelper::get_fields();
if ( ! empty( $custom_field_settings ) && in_array( 'enable', $custom_field_settings, true ) ) {
echo '<div class="woo-feed-variation-options">';
if ( ! empty( $custom_fields ) ) {
echo '<div class="woo-feed-variation-options">';
echo "<hr>";
echo sprintf( '<h4 class="%s">%s</h4>', esc_attr( 'woo-feed-variation-option-title' ), esc_html__( 'CUSTOM FIELDS by CTX Feed', 'woo-feed' ) );
echo "<hr>";
echo '<div class="woo-feed-variation-items">';
foreach ( $custom_fields as $field_Key => $custom_field ) {
if ( isset( $custom_field_settings[ $field_Key ] ) && 'enable' === $custom_field_settings[ $field_Key ] && 'text' === $custom_field[2] ) {
$custom_field_id = sprintf( 'woo_feed_%s_var[%d]', strtolower( $field_Key ), $variation->ID );
$custom_field_label = isset( $custom_field[0] ) ? $custom_field[0] : '';
$custom_field_description = sprintf( 'Set Variation %s here.', $custom_field_label );
//identifier meta value for old and new version users
if ( metadata_exists( 'post', $variation->ID, 'woo_feed_' . strtolower( $field_Key ) . '_var' ) ) {
$custom_field_key = sprintf( 'woo_feed_%s_var', strtolower( $field_Key ) );
} else {
$custom_field_key = sprintf( 'woo_feed_identifier_%s_var', strtolower( $field_Key ) );
}
woocommerce_wp_text_input(
array(
'id' => $custom_field_id,
'value' => esc_attr( get_post_meta( $variation->ID, $custom_field_key, true ) ),
'placeholder' => esc_html( $custom_field_label ),
'label' => esc_html( $custom_field_label ),
'desc_tip' => true,
'description' => esc_html( $custom_field_description ),
'wrapper_class' => 'form-row form-row-full',
)
);
}
}
echo '</div></div>';
}
echo "<hr>";
echo '</div>';
}
}
/**
* Save Product Custom Field Value.
*
* @param int $post_id Product id.
*
* @return void
*/
public function save_custom_field_value( $post_id ) {
$custom_fields = CustomFieldHelper::get_fields();
$set_meta_val = '';
if ( ! empty( $custom_fields ) ) {
foreach ( $custom_fields as $key => $custom_field ) {
$product_meta_key = "woo_feed_$key";
$new_meta_key = "woo_feed_identifier_$key";
$new_meta_val = get_post_meta( $post_id, $new_meta_key, true );
$old_meta_val = get_post_meta( $post_id, $product_meta_key, true );
if ( ! empty( $old_meta_val ) ) {
$set_meta_val = $old_meta_val;
} else {
$set_meta_val = $new_meta_val;
}
if ( isset( $_POST[ $product_meta_key ] ) ) {
$product_meta_value = sanitize_text_field( $_POST[ $product_meta_key ] );
} elseif ( isset( $_POST[ $new_meta_key ] ) ) {
$product_meta_value = sanitize_text_field( $_POST[ $new_meta_key ] );
} else {
$product_meta_value = $set_meta_val;
}
if ( isset( $product_meta_value ) && ! empty( $product_meta_value ) ) {
update_post_meta( $post_id, $product_meta_key, $product_meta_value );
} else {
delete_post_meta( $post_id, $product_meta_key );
}
}
}
}
/**
* Save Product Variation Custom Field Value.
*
* @param int $post_id Variation id.
*
* @return void
*/
public function save_variation_custom_field_value( $post_id) {
$custom_fields = woo_feed_product_custom_fields();
if ( ! empty( $custom_fields ) ) {
foreach ( $custom_fields as $key => $value ) {
$product_meta_key = "woo_feed_{$key}_var";
$new_meta_key = "woo_feed_identifier_{$key}_var";
$new_meta_val = get_post_meta( $post_id, $new_meta_key, true );
$old_meta_val = get_post_meta( $post_id, $product_meta_key, true );
if ( ! empty( $old_meta_val ) ) {
$set_meta_val = $old_meta_val;
} else {
$set_meta_val = $new_meta_val;
}
if ( isset( $_POST[ $product_meta_key ][ $post_id ] ) ) {
$product_meta_value = sanitize_text_field( $_POST[ $product_meta_key ][ $post_id ] );
} elseif ( isset( $_POST[ $new_meta_key ] [ $post_id ] ) ) {
$product_meta_value = sanitize_text_field( $_POST[ $new_meta_key ][ $post_id ] );
} else {
$product_meta_value = $set_meta_val;
}
if ( isset( $product_meta_value ) && ! empty( $product_meta_value ) ) {
update_post_meta( $post_id, $product_meta_key, $product_meta_value );
}else {
delete_post_meta( $post_id, $product_meta_key );
}
}
}
}
}