• プラグイン一覧
    - 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-item-combo-set > クラス > CartPages
レファレンス
バージョン
1.0.6
絞り込み:

目次

  • ソース
  • 関数

フック

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

ファンクション

    クラス

    CartPages

    Cart page HTML

    ソース #ソース

    ファイル: src/Pages/CartPages.php

    class CartPages
    {
        /**
         * Registers hooks
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @return void
         */
        public static function init() {
            $loader = function () {
                $loadcore = apply_filters('wcexics_filter_load_cart_table_default_css', true);
                if ($loadcore === true) {
                    Cart::loadCss();
                }
                do_action('wcexics_load_cart_table_assets');
            };
            (new ConditionalAssetsLoader())->loadCartPageAssets($loader);
            (new ConditionalAssetsLoader())->loadConfirmPageAssets($loader);
            (new ConditionalAssetsLoader())->loadMemberPageAssets($loader);
            (new ConditionalAssetsLoader())->loadOrderCompletionPageAssets(function () use ($loader) {
                $loader();
                Loader::loadCoreCss();
            });
    
            add_filter('usces_filter_cart_item_name_nl', [get_class(), 'displayGroupItemsInCartItemNameEmail'], 10, 2);
            add_filter('usces_filter_cart_item_name', [get_class(), 'displayGroupItemsInCartItemName'], 10, 2);
            add_filter('usces_filter_cart_row', [get_class(), 'addComboSetItemsInput'], 20, 3);
        }
    
        /**
         * Adds group items underneath the cart item name in emails and PDF files
         *
         * Unfortunately, this same filter is used when displaying the cart item name in PDF files so
         * we need to make sure to not use HTML in that case. The only way to do that is by checking
         * whether an `index` key exists in the `$args` parameter. It's an ugly solution but it's the
         * only one available.
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @param string $cartItemName
         * @param array  $args
         * @return string
         */
        public static function displayGroupItemsInCartItemNameEmail($cartItemName, $args) {
            if (usces_is_html_mail() && !isset($args['index'])) {
                return self::displayGroupItemsInCartItemName($cartItemName, $args);
            }
    
            $data = self::getComboSetCart($args['cart_row']);
            if (empty($data)) {
                return $cartItemName;
            }
    
            return $cartItemName . Cart::getComboSetCartDetailsNoHtml($data['cartRows'], !isset($args['index']));
        }
    
        /**
         * Adds group items HTML underneath the cart item name
         *
         * Applies to the member page, cart page, confirm page, and order completion page
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @param string $cartItemName
         * @param array  $args
         * @return string
         */
        public static function displayGroupItemsInCartItemName($cartItemName, $args) {
            if (empty($args['cart_row'])) {
                return $cartItemName;
            }
    
            $data = self::getComboSetCart($args['cart_row']);
            if (empty($data)) {
                return $cartItemName;
            }
    
            return $cartItemName . Cart::getComboSetCartDetailsHtml($data['cartRows']);
        }
    
        /**
         * Returns cart data for a combo-set cart row
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @global \usc_e_shop $usces
         * @global \wpdb $wpdb
         * @param array $cart_row
         * @return null|array
         */
        public static function getComboSetCart($cart_row) {
            global $usces, $wpdb;
    
            $cserial = null;
            $isordercart = false;
            $grouplabelmap = [];
            $itemlabelmap = [];
            $ordercart = [];
            if (!empty($cart_row['serial'])) {
                $cserial = $cart_row['serial'];
            } elseif (!empty($cart_row['cart_serial'])) {
                $cserial = $cart_row['cart_serial'];
                $isordercart = true;
            }
    
            if ($cserial === null) {
                return null;
            }
    
            $sels = unserialize($cserial);
            if (empty($sels['comboSetId']) || !isset($sels['comboSetItems'])) {
                return null;
            }
    
            if ($isordercart === true) {
                $csgioct = Schema::getComboSetGroupItemsOrderCartTable();
                $results = $wpdb->get_results(
                    $wpdb->prepare(
                        "SELECT * FROM {$csgioct} WHERE combo_set_cart_id = %d ORDER BY cart_id ASC",
                        $cart_row['cart_id']
                    ),
                    ARRAY_A
                );
                if ($results !== null) {
                    $index = 0;
                    foreach ($sels['comboSetItems'] as $gitem) {
                        if (empty($results[$index]['cart_serial'])) {
                            continue;
                        }
                        $gocserial = $results[$index]['cart_serial'];
                        $gisels = unserialize($gocserial);
                        $grouplabelmap[$gisels['groupId']] = !empty($gisels['groupLabel']) ? $gisels['groupLabel'] : '';
                        $itemlabelmap[$gisels['itemId']] = !empty($gisels['itemLabel']) ? $gisels['itemLabel'] : '';
                        $ordercart[$gisels['itemId']] = $results[$index];
                        $index++;
                    }
                }
            } else {
                $cscart = !empty($_SESSION['usces_cart'][$cserial]) ? $_SESSION['usces_cart'][$cserial] : [];
                $grouplabelmap = !empty($cscart['grouplabelmap']) ? $cscart['grouplabelmap'] : [];
                $itemlabelmap = !empty($cscart['itemlabelmap']) ? $cscart['itemlabelmap'] : [];
                $ordercart = [];
            }
    
            $rows = [];
            foreach ($sels['comboSetItems'] as $serial => $gitem) {
                $gisels = unserialize($serial);
                $gicsels = (new \usces_cart())->key_unserialize($serial);
                $rows[$gisels['groupId']]['groupLabel'] = '';
                $glabel = '';
                if (!empty($grouplabelmap[$gisels['groupId']])) {
                    $glabel = $grouplabelmap[$gisels['groupId']];
                }
                $itemLabel = '';
                if (!empty($itemlabelmap[$gisels['itemId']])) {
                    $itemLabel = $itemlabelmap[$gisels['itemId']];
                } else {
                    $itemLabel = wcexics_get_group_item_default_label(
                        $usces->getItemName($gicsels['post_id']),
                        $usces->getItemSkuDisp($gicsels['post_id'], urldecode($gicsels['sku'])),
                        $gitem['quant'],
                        $gitem['price']
                    );
                }
    
                $opts = !empty($gicsels['options']) ? $gicsels['options'] : [];
    
                $giordercart = isset($ordercart[$gisels['itemId']]) ? $ordercart[$gisels['itemId']] : null;
                if (is_array($giordercart) && isset($giordercart['cart_id'])) {
                    $options = wcexics_api_get_group_item_ordercart_meta('option', $giordercart['cart_id']);
                    $options = is_array($options) ? $options : [];
                    foreach ($options as $opt) {
                        $optv = maybe_unserialize($opt['meta_value']);
                        if (is_array($optv)) {
                            $optva = [];
                            foreach ($optv as $optvav) {
                                $optva[urlencode((string)$optvav)] = urlencode((string)$optvav);
                            }
                            $optv = $optva;
                        } else {
                            $optv = urlencode((string)$optv);
                        }
                        $opts[urlencode($opt['meta_key'])] = $optv;
                    }
                }
                $rows[$gisels['groupId']]['groupLabel'] = $glabel;
                $rows[$gisels['groupId']]['groupItems'][] = [
                    'name' => $itemLabel,
                    'itemId' => $gisels['itemId'],
                    'ordercart' => $giordercart,
                    'options' => $opts,
                ];
            }
    
            return [
                'cserial' => $cserial,
                'grouplabelmap' => $grouplabelmap,
                'groupItems' => $sels['comboSetItems'],
                'cartRows' => $rows,
            ];
        }
    
        /**
         * Adds combo-set ID and group items inputs for use in `up_serialize`
         *
         * @author Evan D Shaw <evandanielshaw@gmail.com>
         * @param string $row
         * @param array  $cart
         * @param array  $materials
         * @return string
         */
        public static function addComboSetItemsInput($row, $cart, $materials) {
            $sels = unserialize($materials['cart_row']['serial']);
            if (empty($sels['comboSetId']) || empty($sels['comboSetItems'])) {
                return $row;
            }
    
            $i = $materials['i'];
            $comboSetId = $sels['comboSetId'];
            $comboSetItems = serialize($sels['comboSetItems']);
            $row .= "<input type='hidden' name='comboSetId[{$i}]' value='{$comboSetId}' />";
            $row .= "<input type='hidden' name='comboSetItems[{$i}]' value='{$comboSetItems}' />";
            return $row;
        }
    }
    

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


    関数 #関数

    Top ↑

    • addComboSetItemsInput — Adds combo-set ID and group items inputs for use in `up_serialize`
    • displayGroupItemsInCartItemName — Adds group items HTML underneath the cart item name
    • displayGroupItemsInCartItemNameEmail — Adds group items underneath the cart item name in emails and PDF files
    • getComboSetCart — Returns cart data for a combo-set cart row
    • init — Registers hooks

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

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

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

    © 2025 Aivec llc All Rights Reserved.