我同意@Tom J Nowell的观点:
我建议你把它删除,或者干脆说“版权所有”。
但在寻找答案的过程中,有一条建议使用选项字段来缓存年份:
/**
* Get year range for posts.
*
* @return str
*/
function wpse_226627_get_copyright() {
if ( ! $years = get_option( \'copyright\' ) ) {
$args = [
\'posts_per_page\' => 1,
\'post_type\' => get_post_types([ \'public\' => true ]),
\'post_status\' => \'publish\',
\'orderby\' => \'post_date\',
/**
* Don\'t waste memory we don\'t need
*/
\'update_post_term_cache\' => false,
\'update_post_meta_cache\' => false,
\'cache_results\' => false,
];
$newest = get_posts([ \'order\' => \'DESC\' ] + $args );
$oldest = get_posts([ \'order\' => \'ASC\' ] + $args );
$years = [
\'from\' => $oldest ? mysql2date( \'Y\', $oldest[0]->post_date_gmt ) : \'\',
\'to\' => $newest ? mysql2date( \'Y\', $newest[0]->post_date_gmt ) : \'\',
];
update_option( \'copyright_years\', $years );
}
return $years;
}
/**
* Bust the cache.
*/
function wpse_226627_flush_years( $post_id ) {
if ( in_array( get_post_type( $post_id ), get_post_types([ \'public\' => true ]) ) )
update_option( \'copyright_years\', \'\' );
}
add_action( \'before_delete_post\', \'wpse_226627_flush_years\' );
add_action( \'save_post\', \'wpse_226627_flush_years\' );
这样会刷新缓存;只有在创建/更新/删除帖子时才会填充,所以这里只需几个额外的查询(而不是一个直接的数据库调用)就没有什么大不了的了。
$years = wpse_226627_get_years();
$copyright = $years[\'from\'];
if ( $years[\'from\'] != $years[\'to\'] )
$copyright .= \' — \' . $years[\'to\'];
我选择将年份缓存为一个序列化数组(而不是编译的版权字符串),这样,如果您希望更改它们的布局/使用它们做一些不同的事情,您就可以始终独立使用这些值。