https://github.com/markjaquith/wp-tlc-transients
https://github.com/markjaquith/wp-tlc-transients
Last synced: 9 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/markjaquith/wp-tlc-transients
- Owner: markjaquith
- License: gpl-2.0
- Created: 2011-09-05T19:53:24.000Z (almost 15 years ago)
- Default Branch: master
- Last Pushed: 2020-10-06T17:29:13.000Z (over 5 years ago)
- Last Synced: 2025-09-28T04:35:39.493Z (9 months ago)
- Language: PHP
- Homepage:
- Size: 244 KB
- Stars: 342
- Watchers: 21
- Forks: 37
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TLC Transients
A WordPress transients interface with support for soft-expiration (use old content until new content is available), background updating of the transients (without having to wait for a cron job), and a chainable syntax that allows for one liners.
## License
TLC Transients is licensed under the GPL, version 2.0 or any later version. See `LICENSE`.
## Examples
In this simple example, we're defining a feed-fetching callback, and then using `tlc_transient` with a chain to point to that callback and use it, all in one line. Note that since we haven't used `background_only()`, the initial load of this **will** cause the page to pause.
```php
30 ) )
);
}
// Grab that feed
echo tlc_transient( 'example-feed' )
->updates_with( 'my_callback' )
->expires_in( 300 )
->get();
?>
```
This time, we'll set `background_only()` in the chain. This means that if there has been a hard cache flush, or this is the first-ever request, it will return false. So your code will have to be written to gracefully degrade if the feed isn't yet available. This, of course, triggers a background update. And once it is available, it will start returning the content.
```php
updates_with( 'my_callback' )
->expires_in( 300 )
->background_only()
->get();
?>
```
We don't have to chain, of course.
```php
updates_with( 'my_callback' );
} else {
$t->updates_with( 'some_other_callback' );
}
$t->expires_in( 300 );
echo $t->get();
?>
```
We can even pass parameters to our callback.
```php
30 ) ) ),
);
}
// Grab that feed
echo tlc_transient( 'example-feed' )
->updates_with( 'my_callback_with_param', array( 'bar' ) )
->expires_in( 300 )
->background_only()
->get();
?>
```
## Notes
### Context
It should be noted that when a callback runs asynchronously, you are not in control of context. The context that existed when you registered the callback has no bearing on the context when the callback is actually run. So if there is **anything** that you're assuming in your callback function (whether a certain user being current, a certain post having been queried, etc), you must rewrite your calllback function so that these assumptions are not made, and instead pass in this context in the form of parameters, which your callback then uses to recreate your desired context.