クラス
Item
ソース ソース
ファイル: src/Admin/Pages/Item/Item.php
class Item { const SCRIPT_SLUG = 'wcexics-admin-item'; /** * Master object * * @var Master */ private $master; /** * Injects `Master` * * @author Evan D Shaw <evandanielshaw@gmail.com> * @param Master $master * @return void */ public function __construct(Master $master) { $this->master = $master; } /** * Registers hooks * * @author Evan D Shaw <evandanielshaw@gmail.com> * @return void */ public function init() { add_filter('usces_item_master_first_section', [$this, 'delegateAssetsLoad'], 11, 2); add_filter('usces_filter_sku_meta_row', [get_class(), 'addComboApp'], 10, 2); } /** * Delegates to load method * * @author Evan D Shaw <evandanielshaw@gmail.com> * @param null $null * @param int $post_id * @return void */ public function delegateAssetsLoad($null, $post_id) { $this->load($post_id); } /** * Loads settings page assets * * @author Evan D Shaw <evandanielshaw@gmail.com> * @param int $post_id * @return void */ public function load($post_id) { // scripts wp_enqueue_script('jquery-ui-sortable'); $assetsmap = include(WCEXICS_DIST_JS_DIR . '/Admin/Pages/Item/App.asset.php'); wp_enqueue_script( self::SCRIPT_SLUG, WCEXICS_DIST_JS_URL . '/Admin/Pages/Item/App.js', array_merge($assetsmap['dependencies'], ['jquery-ui-sortable']), $assetsmap['version'], true ); Snackbar::load([self::SCRIPT_SLUG]); // styles Loader::loadCoreCss(); /** * It's unclear how you are supposed to load the admin theme for components that are used * outside of the block editor... so we just load the `wp-block-editor` styles so that the * admin theme is correctly applied to our components. * * IS THERE NO WAY TO DO THIS GUTENBERG??? */ wp_enqueue_style('wp-block-editor'); wp_enqueue_style('wp-components'); wp_enqueue_style( self::SCRIPT_SLUG, WCEXICS_PLUGIN_URL . '/src/Admin/Pages/Item/combo-set-app.css', [], WCEXICS_VERSION ); // injections wp_set_script_translations(self::SCRIPT_SLUG, 'wcexics', WCEXICS_LANG_DIR); wp_localize_script( self::SCRIPT_SLUG, 'wcexics', array_merge( [ 'multiSelectText' => __('Multi-select', 'usces'), 'requiredText' => __('Required', 'usces'), 'skuCodeText' => __('SKU code', 'usces'), 'skuDisplayNameText' => __('SKU display name ', 'usces'), 'currencySymbol' => __('dollars', 'usces'), 'welitems' => Utils::getAllPublishedWelcartItems(), 'combos' => API\ComboSet::getAllComboSetsForPostId($post_id), 'postId' => $post_id, 'domElements' => DomElementIdentifiers::getConstantsMap(), ], $this->master->getScriptInjectionVariables() ) ); } /** * Adds item combo registration React app * * @author Evan D Shaw <evandanielshaw@gmail.com> * @param string $extras * @param array $sku * @return string */ public static function addComboApp($extras, $sku) { ob_start(); ?> <tr> <td class="td_<?php echo esc_attr(Master::REACT_DOM_NODE); ?>" id="td_<?php echo esc_attr(Master::REACT_DOM_NODE . '_' . $sku['meta_id']); ?>" colspan="5" > <div class="<?php echo esc_attr(Master::REACT_DOM_NODE); ?>" id="<?php echo esc_attr(Master::REACT_DOM_NODE . '_' . $sku['meta_id']); ?>" data-sku-meta-id="<?php echo esc_attr($sku['meta_id']); ?>" ></div> </td> </tr> <?php $react = ob_get_clean(); return $extras . $react; } }
- __construct — Injects `Master`
- addComboApp — Adds item combo registration React app
- delegateAssetsLoad — Delegates to load method
- init — Registers hooks
- load — Loads settings page assets