| 开发者 | polettoespana |
|---|---|
| 更新时间 | 2026年3月19日 18:51 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 6.9 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
text-[11px]).
Awards
Manage a list of awards and recognitions for each brand — with optional logo, award name, event name, and year. Display them as a styled list using the [ctbag_awards] shortcode.
Gallery
Upload a curated image gallery per brand. Display it as a responsive grid with the [ctbag_gallery] shortcode. Optional native WooCommerce lightbox (PhotoSwipe) via lightbox="1".
Shortcodes
[ctbag_custom_fields]
Outputs brand custom fields as a <dl> list.
[ctbag_custom_fields brand="slug" wrapper_class="..." dt_class="..." dd_class="..."]
[ctbag_awards]
Outputs brand awards as a styled card list.
[ctbag_awards brand="slug" title="Awards" wrapper_class="..." card_class="..."]
[ctbag_gallery]
Outputs brand gallery as a responsive image grid.
[ctbag_gallery brand="slug" title="Gallery" wrapper_class="..." lightbox="1"]
PHP Helper Functions
All shortcodes are also available as direct PHP functions that bypass WordPress' shortcode parser — useful when Tailwind arbitrary-value classes (e.g. text-[11px]) would otherwise be mangled:
echo ctbag_custom_fields(['wrapper_class' => 'grid grid-cols-2 gap-4']);
echo ctbag_awards(['title' => ('Awards', 'your-textdomain')]);
echo ctbag_gallery(['title' => ('Gallery', 'your-textdomain'), 'lightbox' => '1']);
Professional Admin UI
All brand meta fields are presented in a clean, card-based admin interface grouped by module (HTML Description, Custom Fields, Awards, Gallery), with collapsible shortcode reference built in. Custom fields and awards support drag & drop reordering. Gallery images can be removed individually (× button on hover) and reordered by dragging.
carttrigger-bag folder to the /wp-content/plugins/ directory.Yes. WooCommerce must be active before activating CartTrigger – BAG. The plugin declares a Requires Plugins: woocommerce dependency.
WooCommerce 8.0 or higher is recommended. The plugin has been tested up to WooCommerce 10.6.1.
Yes, but classes containing square brackets (e.g. text-[11px]) will be interpreted as shortcode closing tags by WordPress. Use the PHP helper functions instead — they bypass the shortcode parser entirely.
The lightbox uses WooCommerce's bundled PhotoSwipe library. It is only active when lightbox="1" is set. On pages where WooCommerce scripts are disabled, a graceful fallback (open image in new tab) is used automatically.
The size_thumb parameter controls which registered WordPress image size is used for gallery thumbnails. The default is medium_large (typically 768 px wide), which is appropriate for large single-column layouts. If your gallery is displayed in a multi-column grid (3–4 columns), use size_thumb="medium" (300 px) to reduce file weight by 4–6× with no visible quality loss:
[ctbag_gallery size_thumb="medium" lightbox="1"]
Or via PHP helper:
echo ctbag_gallery(['size_thumb' => 'medium', 'lightbox' => '1']);
Brand taxonomy pages contain no user-specific content (no cart, no session), so they are ideal candidates for full-page caching. Make sure your caching plugin (LiteSpeed Cache, WP Rocket, W3 Total Cache…) does not exclude brand taxonomy pages from its cache. Since version 2.0.8, PhotoSwipe (4 CSS/JS files) is only enqueued on brand pages that actually have a gallery, so brands without a gallery already load significantly fewer assets. If you use LiteSpeed Cache and notice that brand pages are slow after a product update, check whether "Smart Purge on Product Update" is purging brand taxonomy pages. Enabling the LiteSpeed Crawler ensures the cache is regenerated automatically in the background so visitors never hit an uncached page.
id="ctb_gallery" while the admin JS targeted #ctbag_gallery, so the hidden field was never updated before form submission.ctbag_save_term_meta).ctb_* keys to ctbag_* keys.ctb_* to ctbag_* to meet the WordPress.org 5-character prefix requirement (ctbag = CartTrigger BAG).assets/js/ctbag-gallery-lightbox.js) loaded via wp_enqueue_script().") in award names, event names, and custom field values were corrupted on save. Root cause: WordPress calls wp_unslash() (stripslashes) on meta values inside add_metadata(), which stripped the backslash from \" in the JSON string, producing invalid JSON. Fix: awards and custom fields are now stored as native PHP arrays via maybe_serialize() — no backslash escaping involved, immune to the slashing issue. Backward-compatible: existing JSON-format data is still read correctly.sanitize_text_field() with wp_strip_all_tags() to avoid the internal wp_check_invalid_utf8() call that incorrectly rejected valid multi-byte characters.