JTZL's Dark Mode

外掛說明

JTZL’s Dark Mode automatically applies dark mode styling to your WordPress site based on your visitors’ operating system preferences. No configuration required – it just works.

Interactive demo:
https://playground.wordpress.net/?blueprint-url=https://wordpress.org/plugins/wp-json/plugins/v1/plugin/jtzls-dark-mode/blueprint.json

Key Features:

  • Automatic detection using CSS prefers-color-scheme: dark media query
  • Zero configuration – works out of the box
  • Privacy-respecting – all detection happens client-side
  • Theme-agnostic – works with any WordPress theme
  • Media preservation – images, videos, and embeds display correctly
  • Developer-friendly – extensible via WordPress filter hooks

How It Works:

The plugin uses the CSS prefers-color-scheme media query to detect when a visitor’s operating system is set to dark mode. When detected, dark mode styles are automatically applied without any JavaScript or server-side processing.

Technical Features:

  • Modern PHP 8.2+ architecture with dependency injection (PHP-DI)
  • Service-oriented design with PSR-4 autoloading
  • Separate styling strategies for Block themes (CSS variables) and Classic themes (filter inversion)
  • Comprehensive test coverage with PHPUnit

Developer Hooks:

Customize the plugin behavior using these filter hooks:

  • jtzl_dark_mode_enabled – Enable/disable dark mode on specific pages
  • jtzl_dark_mode_css_variables – Customize dark mode colors
  • jtzl_dark_mode_custom_css – Add custom CSS rules

安裝方式

  1. Upload the jtzls-dark-mode folder to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. That’s it! Dark mode will automatically apply based on visitor preferences

常見問題集

Does this plugin require any configuration?

No. JTZL’s Dark Mode works automatically without any settings or configuration.

How does dark mode detection work?

The plugin uses the CSS prefers-color-scheme: dark media query, which detects your operating system’s color scheme preference. This is a privacy-respecting, client-side-only approach.

Will this affect my images and videos?

No. The plugin includes media preservation rules that ensure images, videos, iframes, and embedded content display without color distortion.

Can I disable dark mode on specific pages?

Yes. Use the jtzl_dark_mode_enabled filter hook:

add_filter( 'jtzl_dark_mode_enabled', function( $enabled ) {
    if ( is_page( 'landing-page' ) ) {
        return false;
    }
    return $enabled;
} );

Can I customize the dark mode colors?

Yes. Use the jtzl_dark_mode_css_variables filter hook to override default CSS variables:

add_filter( 'jtzl_dark_mode_css_variables', function( $variables ) {
    $variables['--id-bg-primary'] = '#0d1117';
    $variables['--id-text-primary'] = '#f0f0f0';
    return $variables;
} );

Available CSS variables:
* --id-bg-primary – Primary background color
* --id-bg-secondary – Secondary background color
* --id-text-primary – Primary text color
* --id-text-secondary – Secondary text color
* --id-border-color – Border color
* --id-link-color – Link color
* --id-link-hover – Link hover color

Note: CSS variables only apply to Block themes. Classic themes use filter inversion.

Does this work with Full Site Editing (FSE) themes?

Yes. JTZL’s Dark Mode uses different styling strategies optimized for each theme type:

  • Block themes (FSE): Uses CSS custom properties for precise color control
  • Classic themes: Uses CSS filter inversion for broad compatibility

Both approaches ensure proper dark mode rendering without theme modifications.

Does this affect the WordPress admin area?

No. Dark mode styling is applied only to the public-facing frontend of your site.

Can I add custom CSS rules?

Yes. Use the jtzl_dark_mode_custom_css filter hook:

add_filter( 'jtzl_dark_mode_custom_css', function( $css ) {
    return $css . '@media (prefers-color-scheme: dark) { .my-element { color: #fff; } }';
} );

What are the system requirements?

  • PHP 8.2 or higher
  • WordPress 6.9 or higher
  • Composer (for development only)

Is there an interactive preview?

Yes. Launch a live preview in WordPress Playground:

https://playground.wordpress.net/?blueprint-url=https://wordpress.org/plugins/wp-json/plugins/v1/plugin/jtzls-dark-mode/blueprint.json

使用者評論

這個外掛目前沒有任何使用者評論。

參與者及開發者

以下人員參與了開源軟體〈JTZL's Dark Mode〉的開發相關工作。

參與者

將〈JTZL's Dark Mode〉外掛本地化為台灣繁體中文版

對開發相關資訊感興趣?

任何人均可瀏覽程式碼、查看 SVN 存放庫,或透過 RSS 訂閱開發記錄

變更記錄

1.0.0

  • Initial release
  • Automatic dark mode detection via CSS prefers-color-scheme
  • Theme-agnostic styling with CSS custom properties
  • Media preservation for images, videos, and embeds
  • Developer filter hooks for customization