• プラグイン一覧
    - WCEX Item Combo Set
    - WCEX Amazon Pay
    - WCEX Wishlist お気に入りリスト
  • リリース情報
  • お役立ちコラム
  • お問い合わせ
  • サポート
    • よくある質問
      • WCEX Amazon Pay
      • WCEX Wishlist お気に入りリスト
      • wcex-item-combo-set
    • リファレンス
      • WCEX Amazon Pay
      • WCEX Wishlist お気に入りリスト
      • wcex-item-combo-set
新規会員登録
ログイン
新規会員登録
ログイン
カート
  • プラグイン一覧
    • - WCEX Item Combo Set
    • - WCEX Amazon Pay
    • - WCEX Wishlist お気に入りリスト
  • リリース情報
  • お役立ちコラム
  • サポート
    • - よくある質問
      • - WCEX Amazon Pay
      • - WCEX Wishlist お気に入りリスト
      • - wcex-item-combo-set
    • - リファレンス
      • - WCEX Amazon Pay
      • - WCEX Wishlist お気に入りリスト
      • - wcex-item-combo-set
  • お問い合わせ
Aivec APPs > WCEX Amazon Pay > クラス > CustomFields
レファレンス
バージョン
2.6.4
絞り込み:

目次

  • ソース
  • 関数

フック

  • アクション
  • フィルター

ファンクション

    クラス

    CustomFields

    Displays custom customer or member fields

    ソース #ソース

    ファイル: src/Components/CustomFields/CustomFields.php

    class CustomFields extends VueComponent
    {
        /**
         * Used for name attribute of hidden reg fields (customer, member, etc.)
         *
         * @var string
         */
        public $ident = 'customer';
    
        /**
         * True to display form errors in component html, false to not show errors
         *
         * @var boolean
         */
        public $display_errors = true;
    
        /**
         * Flag for custom fields meta
         *
         * @var boolean
         */
        public $hasCustomFields;
    
        /**
         * Array of custom fields
         *
         * @var array
         */
        public $customFields;
    
        /**
         * Template string
         *
         * @var string
         */
        public $template = 'welcart';
    
        /**
         * Template object
         *
         * @var mixed
         */
        public $templateObject;
    
        /**
         * Initialize type of registration
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @global array usces_essential_mark
         * @global \usc_e_shop $usces
         * @param array $config
         * @param bool  $controlledComponent
         */
        public function __construct($config, $controlledComponent = true) {
            global $usces, $usces_essential_mark;
    
            parent::__construct($controlledComponent);
            foreach ($config as $key => $val) {
                if (isset($this->{$key})) {
                    $this->{$key} = $val;
                }
            }
    
            $meta = usces_has_custom_field_meta($this->ident);
            $this->hasCustomFields = !empty($meta) ? true : false;
            $this->customFields = [];
    
            $label = 'custom_' . $this->ident;
            $data = $this->ident === 'member' ? $usces->get_member() : $usces->cart->get_entry();
            if (!empty($meta) && is_array($meta)) {
                foreach ($meta as $key => $entry) {
                    $value = '';
                    $means = (int)$entry['means'];
                    $name = $entry['name'];
                    $selects = [];
                    // if select box, radio, or checkbox
                    if ($means === 0 || $means === 1 || $means === 3 || $means === 4) {
                        if (is_array($entry['value'])) {
                            foreach ($entry['value'] as $k => $v) {
                                $value .= $v . "\n";
                            }
                        }
                        $value = usces_change_line_break($value);
                        $selects = explode("\n", $value);
                    }
                    switch ($means) {
                        case 0: // シングルセレクト
                        case 1: // マルチセレクト NOTE: multi-select isnt an option for custom fields
                            $value = (int)$entry['essential'] === 1 ? '#NONE#' : '';
                            foreach ($selects as $v) {
                                $value = (isset($data[$label][$key]) && $data[$label][$key] == $v) ? esc_html($v) : $value;
                            }
                            $value = !empty($value) ? $value : $selects[0];
                            /**
                             * Filters the custom fields default value for a **select** field shown on the Quickpay page
                             *
                             * @param string $value
                             * @param array  $selects
                             * @param string $ident `customer`, `order`, `delivery`, or `member`
                             * @param string $key Custom field key
                             * @param array  $entry {
                             *     Custom field data
                             *
                             *     @type int    $means     Flag denoting the type of field (checkbox, radio, etc.)
                             *     @type string $name      Custom field display name
                             *     @type string $value     Custom field default value
                             *     @type int    $essential 1 if the field is required, 0 if optional
                             * }
                             */
                            $value = apply_filters(
                                'wcexaap_custom_fields_select_default_value',
                                $value,
                                $selects,
                                $this->ident,
                                $key,
                                $entry
                            );
                            break;
                        case 2: // テキスト
                            $value = isset($data[$label][$key]) ? $data[$label][$key] : '';
                            /**
                             * Filters the custom fields default value for a **text** field shown on the Quickpay page
                             *
                             * @param string $value
                             * @param array  $selects
                             * @param string $ident `customer`, `order`, `delivery`, or `member`
                             * @param string $key Custom field key
                             * @param array  $entry See {@see 'wcexaap_custom_fields_select_default_value'}
                             */
                            $value = apply_filters(
                                'wcexaap_custom_fields_text_default_value',
                                $value,
                                $selects,
                                $this->ident,
                                $key,
                                $entry
                            );
                            break;
                        case 3: // ラジオボタン
                            $value = '';
                            foreach ($selects as $v) {
                                $value = (isset($data[$label][$key]) && $data[$label][$key] == $v) ? esc_html($v) : $value;
                            }
                            /**
                             * Filters the custom fields default value for a **radio** field shown on the Quickpay page
                             *
                             * @param string $value
                             * @param array  $selects
                             * @param string $ident `customer`, `order`, `delivery`, or `member`
                             * @param string $key Custom field key
                             * @param array  $entry See {@see 'wcexaap_custom_fields_select_default_value'}
                             */
                            $value = apply_filters(
                                'wcexaap_custom_fields_radio_default_value',
                                $value,
                                $selects,
                                $this->ident,
                                $key,
                                $entry
                            );
                            break;
                        case 4: // チェックボックス
                            $value = [];
                            foreach ($selects as $v) {
                                if (isset($data[$label][$key]) && is_array($data[$label][$key])) {
                                    $value[$v] = (isset($data[$label][$key]) && array_key_exists($v, $data[$label][$key])) ? [$v] : [];
                                } else {
                                    $value[$v] = (isset($data[$label][$key]) && $data[$label][$key] == $v) ? [$v] : [];
                                }
                            }
                            /**
                             * Filters the custom fields default value for a **checkbox** field shown on the Quickpay page
                             *
                             * @param string $value
                             * @param array  $selects
                             * @param string $ident `customer`, `order`, `delivery`, or `member`
                             * @param string $key Custom field key
                             * @param array  $entry See {@see 'wcexaap_custom_fields_select_default_value'}
                             */
                            $value = apply_filters(
                                'wcexaap_custom_fields_checkbox_default_value',
                                $value,
                                $selects,
                                $this->ident,
                                $key,
                                $entry
                            );
                            break;
                        case 5: // Text-area
                            $value = isset($data[$label][$key]) ? $data[$label][$key] : '';
                            /**
                             * Filters the custom fields default value for a **textarea** field shown on the Quickpay page
                             *
                             * @param string $value
                             * @param array  $selects
                             * @param string $ident `customer`, `order`, `delivery`, or `member`
                             * @param string $key Custom field key
                             * @param array  $entry See {@see 'wcexaap_custom_fields_select_default_value'}
                             */
                            $value = apply_filters(
                                'wcexaap_custom_fields_textarea_default_value',
                                $value,
                                $this->ident,
                                $key,
                                $entry
                            );
                            break;
                    }
                    $e = '';
                    if ((int)$entry['essential'] === 1) {
                        $e = isset($usces_essential_mark[$key])
                            ? usces_get_essential_mark($key)
                            : '<em>' . __('*', 'usces') . '</em>';
                    }
                    $this->customFields[$key] = [
                        'value' => $value,
                        'name' => $name,
                        'error_message' =>
                            // 2 is text, 5 is text-area
                            $means !== 2 && $means !== 5
                            ? sprintf(__('Chose the %s', 'usces'), $name)
                            : sprintf(__('Input the %s', 'usces'), $name),
                        'means' => $means,
                        'essential' => ((int)$entry['essential'] === 1),
                        'e_mark' => $e,
                    ];
                }
            }
    
            switch ($this->template) {
                case 'semantic':
                    $this->templateObject = new Templates\Semantic(
                        $this->hasCustomFields,
                        $this->customFields
                    );
                    break;
                case 'welcart':
                    $this->templateObject = new Templates\Welcart();
                    break;
                default:
                    $this->templateObject = new Templates\Welcart();
                    break;
            }
        }
    
        /**
         * Initializes component
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @return void
         */
        public function init() {
            if (method_exists($this->templateObject, 'init')) {
                $this->templateObject->init();
            }
            add_action('wcexaap_custom_' . $this->ident . '_hidden_fields', [$this, 'hiddenRegFieldsHtml']);
        }
    
        /**
         * Returns component name as is recognized by Vue.
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @return string
         */
        public function getComponentName() {
            return 'customFieldsComponent';
        }
    
        /**
         * Inline template for our Vue.js component.
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @return void
         */
        public function template() {
            if (empty($this->customFields)) {
                return;
            }
    
            $js_custom_fields = '{}';
            if (is_array($this->customFields) && count($this->customFields) > 0) {
                $js_custom_fields = WelcartUtils::localizeAssociativeArray($this->customFields);
            }
    
            $propsAndEvents = [];
            if ($this->controlledComponent === true) {
                $propsAndEvents[] = '@update-payload="updatePayload"';
                $propsAndEvents[] = '@update-error-messages="updateErrorMessages"';
            }
    
            $allPropsAndEvents = join(' ', $propsAndEvents);
            ?>
            <custom-fields-component
                ident='<?php echo $this->ident ?>'
                v-bind:uscescustomfields='<?php echo $js_custom_fields ?>'
                v-bind:displayerrors="<?php echo $this->display_errors ? 'true' : 'false' ?>"
                <?php echo $allPropsAndEvents ?>
                inline-template
            >
                <div>
                    <?php ob_start() ?>
                        <div v-cloak v-for="error in errorMessages" v-if="displayerrors && error" class="error_message">
                            {{ error }}
                        </div>
                        <?php $this->customFieldsMeta(); ?>
                    <?php
                    $html = ob_get_clean();
                    /**
                     * Filters the `custom-fields-component` Vue HTML shown on the Quickpay page
                     *
                     * @param string $html
                     */
                    $html = apply_filters('wcexaap_filter_custom_' . $this->ident . '_component_container', $html);
                    echo $html;
                    ?>
                </div>
            </custom-fields-component>
            <?php
        }
    
        /**
         * Hidden fields for Vue app
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @return string
         */
        public function hiddenFormFields() {
            ob_start();
            ?>
            <template v-for="(obj, key) in customFields">
                <template v-if="obj.means == 4">
                    <template v-for="(nestedobj, nestedkey) in obj.value">
                        <input
                            :key="'nested_' + nestedkey"
                            :name="aap_ident + '[' + key + '][' + nestedkey + ']'"
                            type="hidden"
                            :value="nestedobj"
                        />
                    </template>
                </template>
                <input
                    v-else
                    type="hidden"
                    :name="aap_ident + '[' + key + ']'"
                    :value="obj.value"
                    :key="key"
                />
            </template>
            <?php
            $html = ob_get_contents();
            ob_end_clean();
    
            return $html;
        }
    
        /**
         * Adds custom fields meta.
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @todo add option to include meta that isnt required
         * @global array $usces_entries
         * @return void
         */
        public function customFieldsMeta() {
            global $usces_entries;
            $position_keys = ['name_pre', 'name_after', 'fax_after'];
            if ($this->ident !== 'order') {
                foreach ($position_keys as $position) {
                    $this->templateObject->uscesCustomFieldInput($usces_entries, $this->ident, $position);
                }
            } else {
                $this->templateObject->uscesCustomFieldInput($usces_entries, $this->ident, '');
            }
        }
    }

    ソースを伸ばす ソースを縮める


    関数 #関数

    Top ↑

    • __construct — Initialize type of registration
    • customFieldsMeta — Adds custom fields meta.
    • getComponentName — Returns component name as is recognized by Vue.
    • hiddenFormFields — Hidden fields for Vue app
    • init — Initializes component
    • template — Inline template for our Vue.js component.

    • 新規会員登録
    • ログイン
      • プラグイン一覧
      • 会社概要
      • リリース情報
      • よくある質問
      • お役立ちコラム
      • お問い合わせ
      • 個人情報保護方針
      • 特定商取引法に基づく表記
      • 情報セキュリティ基本方針
      • 利用規約

    アイベック合同会社は「Welcart」「Amazon Pay」の公式パートナーです。

    ※Amazon、Amazon.co.jp、Amazon Payおよびそれらのロゴは、Amazon.com,inc.またはその関連会社の商標です。

    © 2025 Aivec llc All Rights Reserved.