Dette er en demoshop til testformål. Ordrer vil ikke blive gennemført. Luk

Videre til indhold
  • Forside
  • Løsninger
    • Hjemmesider
    • Nyhedsbreve
    • Webshop
    • WordPress
  • Webalive plugin
    • WooCommerce produkt sortering
  • kontakt
  • Forside
  • Løsninger
    • Hjemmesider
    • Nyhedsbreve
    • Webshop
    • WordPress
  • Webalive plugin
    • WooCommerce produkt sortering
  • kontakt

© 2019

Webalive plugin

← Tilbage til alle plugins

Woo Webalive Product Load Premium

Af WebAlive

Version 1.1.3 WP 5.8+ Testet 7.0.3 PHP 7.4+ Opdateret 2026-08-12

Beskrivelse

Woo Webalive Product Load Premium is the Webalive edition of the "Load More Products for WooCommerce" engine, wrapped in a WebAlive PSR-4 plugin shell. It replaces the numbered pagination on shop and product-taxonomy pages with a smooth AJAX-based flow, adds a Webalive-specific subcategory layout, and ships all previously paid-tier features unlocked out of the box.

Core loading behaviors

  • AJAX "Load More" button on shop, product category and product tag pages.
  • Infinite scroll with configurable trigger buffer (in pixels from the bottom of the viewport).
  • Previous-page button to load the page that comes before the currently visible one when a visitor lands mid-catalogue.
  • Multiple loading animations / spinner themes for the Load-More button and lazy-loaded images.
  • Lazy-load for product images (using jquery.lazyloadxt) so long product lists don't hammer the browser or the shop's bandwidth.
  • Optional different loading strategy on mobile (e.g. Load-More button on desktop, infinite scroll on mobile, or vice-versa).
  • Customisable button labels, colors, borders, radius, padding, margins, and hover states.
  • JavaScript hooks (before_update / after_update) so themes and other plugins can react to newly-injected products \u2014 useful for re-initializing sliders, tooltips, wishlist buttons, quick-view popups, etc.
  • Support for custom product-loop selectors for themes that render the product grid with non-standard markup.

Webalive additions

  • Subcategories rendered separately from products on the shop and product-taxonomy pages. Subcategory tiles are lifted out of the product loop and printed in their own <ul class="products subcategories"> block above the product grid, giving stores a clean two-tier browse experience. Toggle from WooCommerce \u2192 Product Load Options, or programmatically via option wwplp_separate_subcategories / filter wwplp_separate_subcategories.
  • All engine features unlocked \u2014 every setting that was gated behind the upstream "Premium" / "Business" tier is available with no license key, no upsell prompts, no marketing banners.
  • Own settings screens \u2014 the engine's own AJAX / Load-More / Infinite-scroll settings live under WooCommerce \u2192 Webalive Product Load, and Webalive-owned toggles live under WooCommerce \u2192 Product Load Options.
  • Update delivery via updates.webalive.dk \u2014 the plugin honours WordPress's standard Update URI: header and pulls new versions from the Webalive update server.
  • WooCommerce compatibility declarations for High-Performance Order Storage (HPOS) and Cart / Checkout Blocks.
  • WPML admin-text config for the plugin's own option schema so multilingual sites can translate button texts, loading messages and end-of-list messages via WPML.

Simple migration from "Load More Products for WooCommerce"

If the free upstream Load More Products for WooCommerce plugin is installed on the site, this plugin detects it and guides the site owner through a clean take-over:

  • If the upstream plugin is active, a red admin notice appears; a single button click deactivates it. Existing settings are migrated automatically to the new option schema on the first admin_init after activation \u2014 no fields are lost.
  • If the upstream plugin is installed but inactive, a yellow admin notice appears with a link to the inactive-plugins list, so the site owner can delete the old plugin and prevent accidental reactivation.
  • If the upstream plugin is absent, no migration UI is shown.

The migration is idempotent (uses a wwplp_migrated_v1 marker) and covers the main settings option, wizard status and account bookkeeping keys.

Ændringslog

1.1.3

  • Fix: subcategory tiles were leaking back into the shared <ul class="products"> on AJAX Load-More / infinite-scroll responses, which caused theme-level "equal height" grid styles to stretch the category card to the height of the tallest product card in the same row. SubcategorySeparator now runs remove_filter( 'woocommerce_product_loop_start', 'woocommerce_maybe_show_product_subcategories' ) on init priority 20 instead of on the wp action. wp does not fire on admin-ajax requests, so the removal was only effective on the initial page render — subsequent AJAX-paginated fragments still contained inline subcategories. The separated-block renderer stays on woocommerce_before_shop_loop, which only fires on real front-end shop renders, so the subcategory strip continues to appear exactly once above the initial product grid.

1.1.2

  • New WA-owned settings page at WooCommerce → Product Load Options (admin.php?page=wwplp-options). Currently exposes a single toggle: "Separate subcategories from products" (persisted in option wwplp_separate_subcategories). Uses standard WP Settings API. The bundled engine's own AJAX / Load-More / Infinite-scroll settings stay under WooCommerce → Webalive Product Load as before.
  • Removed src/Admin/BrandingFilter.php. The runtime gettext catch-all that swapped residual "BeRocket" strings to "Webalive" was made redundant by the full source-level rebrand in 1.0.6+. Removing the always-on gettext / ngettext / gettext_with_context filters also removes their per-string overhead.
  • Neutered WebAlive_PLP_Framework::plugin_row_meta() — the upstream method keyed off plugin_basename( engine/main.php ) which never matches the real plugin basename (woo-wa-product-load-premium/woo-wa-product-load-premium.php), so the Docs / Premium / Support links it tried to add never rendered on our plugin row anyway. Method is now a pure return $links; passthrough.
  • Related-plugins sidebar promo image URLs now point at the Webalive CDN pattern https://updates.webalive.dk/package-assets/icons/{slug}.svg for the two promoted plugins (woo-wa-product-sort-option, woo-wa-product-ghs) instead of the local duck SVG.
  • Guarded the desc_top template-substitution loop in get_plugin_data() with an isset() check to avoid Undefined array key "desc_top" warnings when the promoted-plugin entries don't include a top-banner variant (our current two entries don't).

1.1.1

  • Related-plugins sidebar now promotes Webalive plugins instead of the upstream BeRocket catalog. get_plugin_data() in engine/webalive_plp/includes/admin_notices.php rewritten to return two entries:
    • Woo Webalive Product Sort Options → https://webalive.dk/plugins/woo-wa-product-sort-option/
    • Woo Webalive Product GHS → https://webalive.dk/plugins/woo-wa-product-ghs/ Both are shown with the plugin's duck SVG as banner image and a "Download free" CTA (the sidebar template now prints "Download free" when price is empty, falling back to the original "From: $XX" only when a price is set).
  • Fixed wrong URL slug in engine/webalive_plp/framework.php: webalive.dk/plugin/ → webalive.dk/plugins/ in the two remaining plugin_row_meta and admin-settings header link constructors.

1.1.0

  • All premium / paid features unlocked in the Webalive fork. Registered a waplp_get_plugin_version_capability_WebAlive_PLP filter in Plugin::boot() that returns 100. Inside the engine's post_base::is_paid() / is_premium() / is_locked() gating logic this makes every feature unlocked (paid true, premium false, so is_locked is always false for every feature regardless of license tier). The engine's own "Upgrade" / "Buy Premium" / "Go Premium" sidebar CTA now never renders because the plugin_version_capability <= 5 gate in templates/premium.php is false.
  • Deleted the paid include block from engine/main.php (if ( ... && file_exists( __DIR__ . "/paid/paid.php" ) ) { include tripwire.php; include paid.php; }). The paid/ directory has never existed in this fork — the block was dead code left over from the upstream's licensing split.
  • Removed the corresponding BLMP_VER_PAID_DISABLE define from Plugin::load_engine() since there is no longer a paid include block to gate.
  • Note: internal paid / license identifiers still exist inside engine internals (e.g. plugin-variation.php's $license_name = 'paid', updater bookkeeping, addons paid flags) — these are internal metadata that only affect the capability gate we now short-circuit. They are not user-visible.

1.0.9

  • Removed leftover upstream files from engine/ that were dead but branded: engine/readme.txt (BeRocket's upstream readme with berocket.com donate/UTM links, contributors, and paid-feature marketing) and engine/load-more-products.php (BeRocket's original plugin-header stub that only did require_once main.php — never loaded by WordPress since it's two levels deep, and we require the engine's main.php directly from Plugin::load_engine()).

1.0.8

  • Hotfix: Fatal error after activating 1.0.6/1.0.7 (Uncaught Error: Undefined constant "WebAlive_PLP_Version" in engine/main.php:52). The 1.0.6 deep-rebrand renamed the engine's version constant from BeRocket_Load_More_Products_version to WebAlive_PLP_Version, but Plugin::load_engine() only defined the old name. Now defines BOTH constants before requiring the engine so both new and legacy references resolve.

1.0.7

  • Rebranded engine/loco.xml (Loco Translate bundle config): collapsed to a single woo-wa-product-load-premium domain, project name "Woo Webalive Product Load Premium", source . (the whole engine directory), target ../languages (the plugin-root languages folder that our I18n loader reads from). The old two-domain (BeRocket_LMP_domain + BeRocket_domain) config is gone.
  • Rebranded engine/wpml-config.xml: option key br_load_more_products → wa_product_load_premium, sub-keys br_lmp_button_settings / br_lmp_prev_settings / br_lmp_messages_settings → wa_plp_button_settings / wa_plp_prev_settings / wa_plp_messages_settings. WPML admin-text translation now targets the new option schema.

1.0.6

  • Full deep rebrand of the bundled engine. All upstream identifiers renamed at source level (~3000 replacements across 68 files):
    • Classes: BeRocket_LMP → WebAlive_PLP, BeRocket_Framework → WebAlive_PLP_Framework, BeRocket_updater → WebAlive_PLP_updater, and all other BeRocket_* classes prefixed to WebAlive_PLP_*.
    • Hook / filter names: all berocket_* → webalive_plp_* (including admin bar, admin notices, wizard, rate-stars, subscribe, feature-request, related-plugins, above-admin-settings, updater filters, etc.).
    • Option key prefix: br_lmp_* → wa_plp_*.
    • Main option key: br_load_more_products → wa_product_load_premium (existing data auto-migrated on admin_init; see below).
    • Capabilities: manage_berocket → manage_webalive_plp, manage_berocket_account → manage_webalive_plp_account.
    • JS / CSS prefixes: brlmp_, brfr_, bapf_ → waplp_; br_* CSS classes → wa_*.
    • Constants: BeRocket_Load_More_Products_version → WebAlive_PLP_Version, BeRocket_cdn_path → WebAlive_PLP_cdn_path.
    • External domain rewrites: apicdn.berocket.com → assets.webalive.dk, docs.berocket.com → webalive.dk, berocket.com → webalive.dk.
    • JS trigger events: berocket:filters:* → webalive:filters:*.
    • Directory: engine/berocket/ → engine/webalive_plp/.
  • Added OptionMigration service that copies data from the old option keys (br_load_more_products, BeRocket_account_option, BeRocket_selector_wizard_status) to the new keys on admin_init if the new key is empty. Idempotent via wwplp_migrated_v1 marker.
  • Replaced BeRocketUpdaterStub with WebAlivePLPUpdaterStub that declares BOTH WebAlive_PLP_updater (new) and BeRocket_updater (backward-compat alias) as empty classes, so both name-checks return true and the engine's updater bootstrap is skipped in both old and new lookup paths.
  • Note: internal berocket string still appears in src/Admin/BrandingFilter.php (as the target of the runtime gettext catch-all) and in comment references to the upstream plugin in src/Admin/MigrationController.php — both intentional.

1.0.5

  • Removed the berocket-above-settings-banner promo banner from the settings page. The do_action('berocket_above_admin_settings', ...) dispatch in engine/berocket/templates/settings.php has been removed, which was the sole trigger for berocket_admin_notices_rate_stars::show_ad_above_admin_settings (the only consumer of that hook).

1.0.4

  • Visual rebrand of the settings page and premium-feature UI to the WebAlive duck SVG (assets/images/wwplp-duck.svg):
    • Settings-page header logo (engine/berocket/framework.php): replaced the BeRocket white-logo br_logo_white.webp image and its berocket.com link with the duck SVG linked to webalive.dk.
    • Settings-page h2 title (engine/berocket/templates/settings.php): now shows the duck SVG icon next to the plugin name.
    • Settings-page footer (engine/berocket/templates/settings_footer.php): rewritten to show " — developed by WebAlive" with the duck SVG. Removed

1.0.3

  • Full user-visible rebrand — no more "BeRocket" surface in the admin UI:
    • The engine's own updater / license / account system is disabled via a stub BeRocket_updater class loaded before the engine boots. This removes the top-level "BeRocket" admin menu that previously appeared for admins with the manage_berocket capability.
    • With the stub in place, the settings submenu is now correctly routed under WooCommerce → Webalive Product Load (admin.php?page=wwplp), not under berocket_account.
    • BeRocket marketing / upsell funnels (engine/includes/admin/funnels.php) are no longer loaded.
    • The bundled paid tripwire is skipped by defining BLMP_VER_PAID_DISABLE before the engine boots.
    • Added BrandingFilter service: runtime gettext / ngettext filter that rewrites residual "BeRocket" phrases to their Webalive equivalents in any translated string that reaches the UI, plus a belt-and-suspenders sweep of berocket_* / brlmp_* admin bar nodes.
    • Menu label and settings-page title changed from "Load More Products" to "Webalive Product Load" via info['norm_name'] / info['full_name'].
  • Fixed a broken define() in engine/main.php left over from the 1.0.1 text-domain sweep (identifier contained hyphens).
  • Note: internal class names (BeRocket_LMP, BeRocket_Framework, framework filter/hook names) are intentionally NOT renamed. They are internal, non-visible, and touch 2000+ occurrences across the engine — renaming would break third-party integrations and add no user-facing benefit.
  • Plugin file structure additions: src/Admin/BrandingFilter.php, src/Compat/BeRocketUpdaterStub.php.

1.0.2

  • Migration notice: expanded to detect three states of the upstream BeRocket plugin (active / installed-inactive / absent). When the upstream plugin is merely installed but inactive, a warning notice now instructs the site owner to delete it so it cannot be re-enabled by accident and clash with the bundled engine. When active, the notice is stronger (error style) and instructs both deactivation and subsequent deletion.

1.0.1

  • Text domain unified: all bundled engine strings now use the plugin's own text domain woo-wa-product-load-premium (previously mixed with BeRocket_LMP_domain, BeRocket_domain, BeRocket_AJAX_domain, BeRocket_products_label_domain). All engine strings are now owned by the plugin's translation workflow.
  • Fixed Poedit warnings: removed empty-msgid calls (esc_html__($var ?? '', ...)) in locked_features.php and post_label.php where the msgid was a dynamic variable; replaced with plain esc_html().
  • Fixed Poedit warning in engine/main.php: unified the singular "Showing the single result" WooCommerce string usage to always use _n() so gettext no longer flags dual singular/plural usage of the same msgid.

1.0.0

  • Initial release.
  • Bundled BeRocket Load More Products engine (v3.2.2 fork) under engine/.
  • Webalive PSR-4 shell (namespace WebAlive\WWPLP).
  • New feature: subcategories rendered separately from products on shop / product taxonomy pages.
  • Migration notice + one-click deactivation of the upstream BeRocket plugin.
  • Update URI wired to updates.webalive.dk.
© 2026 Webalive - live website