WP Manifestindependent plugin directory
manifest / media / ofnoa-marquee

Ofnoa Marquee — Logo & Text Ticker WP Registry grade A. No security issues foundWP RegistryNo security issues foundOpen the reportA

★ 0stars
3release downloads
v1.0.2latest · 1mo ago

Install

Download ofnoa-marquee.zip From the v1.0.2 release on GitHub, Sep 8, 2026

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/lirish1973/ofnoa-marquee/releases/download/v1.0.2/ofnoa-marquee.zip
Updates itself. It ships its own updater, so new versions appear under Dashboard → Updates.

A professional, fully customizable marquee / ticker plugin for WordPress: scrolling logo walls, news tickers, announcement bars — with real design control and no jQuery on the front end.

Repository: lirish1973/ofnoa-marquee · License: GPL-2.0-or-later · Requires WP 5.8 · PHP 7.2


Highlights

Unlimited marquees Every marquee is its own post — build as many as you need, duplicate any of them in one click.
Logos, text or both Image items, text items, or an image with a label next to it.
4 directions Right‑to‑left, left‑to‑right, bottom‑to‑top, top‑to‑bottom.
1 / 2 / 3 rows Extra rows can run in the opposite direction with their own speed and start offset.
Constant speed Speed is set in pixels per second, so adding items never changes how fast it moves.
Seamless loop The content group is measured and cloned just enough times to fill the viewport — no gaps, no jumps.
Live preview See the result while you edit, at desktop / tablet / mobile widths.
Per‑device settings Gap, speed, logo height, font size and item padding each have tablet and mobile values.
Dynamic content Pull the latest posts (any post type) instead of typing items manually.
Accessible Real prefers-reduced-motion support, focus styles, cloned content hidden from screen readers, keyboard focus pauses the animation.
Fast Pure CSS animation on the GPU, ~9 KB of vanilla JS, assets loaded only on pages that actually render a marquee.

Installation

From a release (recommended)

  1. Download ofnoa-marquee.zip from the latest release.
  2. WordPress → Plugins → Add New → Upload Plugin.
  3. Activate. A new Marquee menu appears in the sidebar.

From source

cd wp-content/plugins
git clone https://github.com/lirish1973/ofnoa-marquee.git ofnoa-marquee

Updates

The plugin checks GitHub releases every 6 hours and offers updates through the normal WordPress update screen. You can force a check under Marquee → Tools → Check for updates now, disable checks entirely, or add a token for a private repository.


Usage

Shortcode

[ofnoa_marquee id="123"]

Any setting can be overridden inline:

[ofnoa_marquee id="123" speed="120" direction="right" rows="2" logo_height="80" fade_edges="1"]

[omq id="123"] is a shorter alias.

Gutenberg

Add the Ofnoa Marquee block and pick a marquee. Speed and direction can be overridden per block; the block renders server-side so the editor shows the real thing.

Elementor

Search for Ofnoa Marquee in the General category. The widget exposes the marquee selector plus overrides for direction, rows, speed, gap, logo height, font size, colors, background, edge fade and pause on hover.

PHP

<?php ofnoa_marquee( 123 ); ?>

<?php echo ofnoa_get_marquee( 123, array( 'direction' => 'right', 'speed' => 90 ) ); ?>

Classic widget

Appearance → Widgets → Ofnoa Marquee.


Settings reference

Content — marquee type (logos / text / mixed), manual items or dynamic post query (post type, count, order, link to post).

Layout — direction, rows, extra-row direction / speed / offset / gap, item gap, alignment, full or boxed width, max width, vertical height, padding, margin.

Container style — transparent / solid / gradient background with angle, border width, style, color, radius, shadow presets or a custom shadow, edge fade with size.

Items style — logo height, max width, object-fit, grayscale, opacity, blend mode, hover grayscale / opacity / scale, item background (normal + hover), radius, border, padding, shadow, transition duration.

Text & separator — font family, size, weight, line height, letter spacing, transform, color, hover color, text shadow; separator style (dot, dash, star, line, custom character) with its own color and size.

Animation — speed in px/s, timing function, pause on hover, hover speed, click to pause, start delay, reverse on scroll, scroll speed boost, animate only when visible, fade in, respect reduced motion.

Advanced — link target, rel="nofollow", ARIA label, extra CSS class, hide on desktop / tablet / mobile, custom breakpoints, z-index, custom CSS with a {{WRAPPER}} placeholder.


Custom CSS

Inside a marquee's Advanced → Custom CSS, {{WRAPPER}} is replaced with that instance's ID:

{{WRAPPER}} .omq__item--logo { padding: 0 8px; }
{{WRAPPER}} .omq__text { text-shadow: 0 2px 8px rgba(0,0,0,.2); }

Restyling images

The image geometry (height, width, fit) is enforced with !important, because themes routinely override plain classes and break the marquee's layout. Change it through the custom properties rather than by re-declaring the properties:

{{WRAPPER}} { --omq-logo-h: 80px; --omq-logo-maxw: 200px; --omq-logo-fit: cover; }

Markup & hooks

<div id="omq-123-1" class="omq omq--dir-left …" style="--omq-gap:40px; …">
  <div class="omq__row omq__row--1">
    <div class="omq__viewport">
      <div class="omq__track">
        <div class="omq__group"><!-- items + separators --></div>
      </div>
    </div>
  </div>
</div>

Every visual value is a CSS custom property (--omq-gap, --omq-logo-h, --omq-color, --omq-speed, …), so a child theme can restyle a marquee without touching the plugin.

JavaScript API:

window.OfnoaMarquee.initAll( container );  // init marquees added dynamically
window.OfnoaMarquee.refreshAll();          // re-measure after a layout change
window.OfnoaMarquee.destroy( element );    // tear one down

PHP filter:

add_filter( 'omq_field_schema', function ( $schema ) {
    $schema['animation']['fields']['speed']['default'] = 100;
    return $schema;
} );

Development

ofnoa-marquee.php            Bootstrap, constants, asset registration
includes/
  class-omq-fields.php       Field schema — defaults, admin UI and sanitization in one place
  class-omq-post-type.php    CPT, admin columns, duplication
  class-omq-metabox.php      Builder UI, item repeater, AJAX live preview, saving
  class-omq-render.php       HTML + scoped CSS generation
  class-omq-shortcode.php    Shortcode and template tags
  class-omq-block.php        Gutenberg block (server rendered)
  class-omq-elementor*.php   Elementor widget
  class-omq-widget.php       Classic widget
  class-omq-tools.php        Options, import / export
  class-omq-updater.php      GitHub release updater
assets/css|js|img            Front-end and admin assets

Adding a setting means adding one entry to OMQ_Fields::schema() — the admin control, default value, sanitizer and shortcode attribute all follow automatically. Render it by mapping the key to a CSS variable in OMQ_Render::inline_vars().

Releasing

push.ps1 does the whole run from Windows — it refuses to push when the version in ofnoa-marquee.php, OMQ_VERSION and readme.txt disagree, so a release can't go out half-bumped:

.\push.ps1                                    # push what is already committed
.\push.ps1 -Message "fix: separator spacing"  # commit everything, then push
.\push.ps1 -Zip -Tag -Release                 # build the ZIP, tag v<version>, publish the release

push.bat is a double-click wrapper for the same thing.

The same flow in bash — Git Bash on Windows, WSL, Linux, macOS:

./push.sh                                   # push what is already committed
./push.sh -m "fix: separator spacing"       # commit everything, then push
./push.sh -z -t -r                          # build the ZIP, tag v<version>, publish the release
./push.sh -n                                # dry run: print every step, change nothing

push.sh packages from git ls-files, so nothing .gitignore excludes can reach a release, and it falls back through zip → python3 → PowerShell → Windows bsdtar so it works even in a bare Git Bash install. None of the push.* files ship inside the plugin ZIP.

Doing it by hand instead:

# bump the version in ofnoa-marquee.php, readme.txt and CHANGELOG.md first
git tag v1.0.2
git push origin v1.0.2

The GitHub Action builds ofnoa-marquee.zip (correctly nested in an ofnoa-marquee/ folder) and publishes it as a release asset — which is exactly what the in-plugin updater downloads.


License

GPL-2.0-or-later. See LICENSE.

Releases

3 releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
v1.0.2 latest
Sep 8, 2026 1mo ago
ofnoa-marquee.zip
3
Sep 8, 2026 1mo ago
ofnoa-marquee.zip
0
Sep 8, 2026 1mo ago
ofnoa-marquee.zip
0
A grade

Security

Ofnoa Marquee — Logo & Text Ticker 1.0.2 · audited by WP Registry

No security issues found.

Audited release
1.0.2
Findings
none
Worst severity
—
Content hash
4f7aeb4b7c8e1b5485a579f3…

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.