221 lines
7.8 KiB
PHP
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 );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|