Description
This plugin provides template tags that allow you to retrieve the name, path (relative or absolute), url, or fully marked-up link to a randomly chosen file or files in a specified directory.
Arguments to the functions permit you to limit what file(s) can be randomly selected based on a given set of file extensions. You can also explicitly specify files that should not be randomly selected.
This functionality can be useful for displaying random images/logos or including text from random files onto your site (writing excerpts, multi-line quotes, etc). Other ideas: random ads, random CSS files, random theme template selection.
Notes:
-
If you want to actually display the name of the random file, be sure to ‘echo’ the results:
-
Unless you limit the file search to only include a particular extension (via
$extensions
argument), all files in the specified$dir
will be under consideration for random selection -
Can be run inside or outside of «the loop»
Links: Plugin Homepage | Plugin Directory Page | GitHub | Author Homepage
Developer Documentation
Developer documentation can be found in DEVELOPER-DOCS.md. That documentation covers the template tags and hooks provided by the plugin.
As an overview, these are the template tags provided by the plugin:
c2c_random_file()
: Retrieves the name of a random file from a specified directory and returns information based on the file.c2c_random_files()
: Retrieves the name, path, or link to a specified number of randomly chosen files in a specified directory.
Theses are the hooks provided by the plugin:
c2c_random_file
: Filter to safely invokec2c_random_file()
in such a way that if the plugin were deactivated or deleted, then your calls to the function won’t cause errors in your site.c2c_random_files
: Filter to safely invokec2c_random_files()
in such a way that if the plugin were deactivated or deleted, then your calls to the function won’t cause errors in your site.
Installation
- Install via the built-in WordPress plugin installer. Or download and unzip
random-file.zip
inside the plugins directory for your site (typicallywp-content/plugins/
) - Activate the plugin through the ‘Plugins’ admin menu in WordPress
- Make use of the
c2c_random_file()
orc2c_random_files()
template function in your code or template (see examples below).
FAQ
-
Does this plugin do dynamic random rotation within a loaded page (i.e. randomly rotating images within a loaded page)?
-
No. This plugin only selects a random file when the page is loaded. Once loaded, it does not currently add any dynamic functionality to automatically retrieve another random file on its own.
-
Does this plugin include unit tests?
-
Yes. The tests are not packaged in the release .zip file or included in plugins.svn.wordpress.org, but can be found in the plugin’s GitHub repository.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Random File” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Random File” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.0 (2024-08-13)
Highlights:
This minor update features improved randomization of file selection, adds support for the extensions arugment to be an array, notes compatibility through WP 6.6+, removes unit tests from release packaging, updates copyright date (2024), and other code improvements and minor changes.
Details:
- Change: Switch to using
wp_rand()
for more reliable randomization - Change: Allow
$extensions
argument to also accept an array of extensions - Change: Strip surrounding whitespace and leading periods from provided extensions
- Change: Explicitly return false if no file could be found
- Change: Switch to use a switch statement, which is more concise
- Change: Use cleaner
sprintf()
approach to outputting markup - Hardening: Escape text shown via ‘hyperlink’ output (though it’s never anything other than plaintext)
- Change: Note compatibility through WP 6.6+
- Change: Update copyright date (2024)
- Change: Tweak filter descriptions in
readme.txt
- New: Add
.gitignore
file - Change: Remove development and testing-related files from release packaging
- Unit tests:
- Hardening: Prevent direct web access to
bootstrap.php
- Allow tests to run against current versions of WordPress
- New: Add more unit tests
- New: Add
composer.json
for PHPUnit Polyfill dependency - Change: In bootstrap, store path to plugin directory in a constant
- Change: Rename a test
- Hardening: Prevent direct web access to
1.8.12 (2023-05-21)
- New: Add DEVELOPER-DOCS.md and move hooks documentation into it
- Change: Note compatibility through WP 6.3+
- Change: Update copyright date (2023)
1.8.11 (2021-09-18)
- Change: Note compatibility through WP 5.8+
- Unit tests:
- Change: Restructure unit test directories
- Change: Move
phpunit/
intotests/
- Change: Move
phpunit/bin
intotests/
- Change: Move
- Change: Remove ‘test-‘ prefix from unit test file
- Change: In bootstrap, store path to plugin file constant
- Change: In bootstrap, add backcompat for PHPUnit pre-v6.0
- Change: Restructure unit test directories
Full changelog is available in CHANGELOG.md.