stevegrunwell / wp-cache-remember
WordPress对象缓存和transients的辅助工具
Requires
- php: >=5.2
- composer/installers: ^1.0||^2.0
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^0.5||^0.6||^0.7
- phpcompatibility/phpcompatibility-wp: ^2.1
- wp-coding-standards/wpcs: ^2.2
This package is auto-updated.
Last update: 2024-09-08 22:58:51 UTC
README
WP Cache Remember 是一个简单的 WordPress 包,用于引入方便的新缓存功能。
构建良好的 WordPress 插件知道何时利用对象缓存和/或 transients,但它们通常会产生如下所示的代码
function do_something() { $cache_key = 'some-cache-key'; $cached = wp_cache_get( $cache_key ); // Return the cached value. if ( $cached ) { return $cached; } // Do all the work to calculate the value. $value = a_whole_lotta_processing(); // Cache the value. wp_cache_set( $cache_key, $value ); return $value; }
这种模式效果不错,但有很多重复的代码。此包从 Laravel 的 Cache::remember()
方法 中汲取灵感;使用 wp_cache_remember()
,上面的相同代码变为
function do_something() { return wp_cache_remember( 'some-cache-key', function () { return a_whole_lotta_processing(); } ); }
安装
安装此包的最佳方式是 通过 Composer
$ composer require stevegrunwell/wp-cache-remember
该包包含 composer/installers
包,这使您能够控制包的安装位置。例如,如果您在 WordPress 插件中使用 WP Cache Remember,您可能会将文件存储在 includes/
目录中。为此,将以下内容添加到您插件的 composer.json
文件中
{ "extra": { "installer-paths": { "includes/{$name}/": ["stevegrunwell/wp-cache-remember"] } } }
然后,在您的插件内部,只需包含或要求该文件
require_once __DIR__ . '/includes/wp-cache-remember/wp-cache-remember.php';
作为插件使用
如果您愿意,该包还包括作为 WordPress 插件使用的必要文件头。
下载或克隆包后,将 wp-cache-remember.php
文件移动到您的 wp-content/mu-plugins/
目录(推荐)或 wp-content/plugins/
目录中。如果您选择了常规插件目录,您需要通过在 WP 管理中的“插件”>“已安装插件”页面手动激活插件。
在插件或主题中打包
WP Cache Remember 已以易于在 WordPress 插件或主题中打包的方式进行构建,即使是商业用途。
每个函数声明都包含适当的 function_exists()
检查,确保在同一个 WordPress 环境中可以存在多个库的多个副本。
使用方法
WP Cache Remember 为 WordPress 提供以下功能
wp_cache_remember()
wp_cache_forget()
remember_transient()
forget_transient()
remember_site_transient()
forget_site_transient()
每个函数都会检查回调的响应是否为 WP_Error
对象,以确保您不会长时间缓存临时错误。PHP 异常也不会被缓存。
wp_cache_remember()
从对象缓存中检索值。如果不存在,运行 $callback
生成并缓存该值。
参数
- (string) $key
- 缓存键。
- (callable) $callback
- 用于生成和缓存值的回调。
- (string) $group
- 可选。缓存组。默认为空。
- (int) $expire
- 可选。缓存条目应失效前的秒数。默认为 0(尽可能长时间)。
示例
function get_latest_posts() { return wp_cache_remember( 'latest_posts', function () { return new WP_Query( array( 'posts_per_page' => 5, 'orderby' => 'post_date', 'order' => 'desc', ) ); }, 'my-cache-group', HOUR_IN_SECONDS ); }
wp_cache_forget()
从对象缓存中检索值并随后删除该值。
参数
- (string) $key
- 缓存键。
- (string) $group
- 可选。缓存组。默认为空。
- (mixed) $default
- 可选。如果对象缓存中不存在给定键,则返回的默认值。默认为 null。
示例
function show_error_message() { $error_message = wp_cache_forget( 'form_errors', 'my-cache-group', false ); if ( $error_message ) { echo 'An error occurred: ' . $error_message; } }
remember_transient()
从 transients 中检索值。如果不存在,运行 $callback
生成并缓存该值。
参数
- (string) $key
- 缓存键。
- (callable) $callback
- 用于生成和缓存值的回调。
- (int) $expire
- 可选。缓存条目应失效前的秒数。默认为 0(尽可能长时间)。
示例
function get_tweets() { $user_id = get_current_user_id(); $key = 'latest_tweets_' . $user_id; return remember_transient( $key, function () use ( $user_id ) { return get_latest_tweets_for_user( $user_id ); }, 15 * MINUTE_IN_SECONDS ); }
forget_transient()
从 transients 缓存中检索值并随后删除该值。
参数
- (string) $key
- 缓存键。
- (mixed) $default
- 可选。如果 transients 中不存在给定键,则返回的默认值。默认为 null。
remember_site_transient()
从站点瞬态中检索一个值。如果不存在,运行 $callback
生成并缓存该值。
此函数与 remember_transient()
共享参数和行为,但在使用 WordPress 多站点时,它可以在整个网络上工作。
forget_site_transient()
检索并随后从站点瞬态缓存中删除一个值。
此函数与 forget_transient()
共享参数和行为,但在使用 WordPress 多站点时,它可以在整个网络上工作。
许可证
版权所有 2018 Steve Grunwell
特此授予任何获得本软件及其相关文档文件(“软件”)副本的任何人免费使用该软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供方提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他方式,源自、因或与软件或软件的使用或其他交易有关。