遵循_s
主题我想用Transient制作我自己版本的帖子类别列表,下面是我制作的:
function my_blog_categories() {
global $post;
if ( ( $get_post_categories = get_transient( \'this_blog_categories\' ) === FALSE ) ) {
$get_post_categories = get_the_category_list( \' | \', \'\', $post->ID );
set_transient( \'this_blog_categories\', $get_post_categories );
}
return $get_post_categories;
}
function my_blog_transient_flusher() {
delete_transient( \'this_blog_categories\' );
}
add_action( \'edit_category\', \'my_blog_transient_flusher\' );
add_action( \'save_post\', \'my_blog_transient_flusher\' );
使用WP Optimize,如果我清理瞬态,在第一次刷新时,我可以看到帖子下面的类别。但在第二次首页刷新时,它们就消失了。
请不要那样,没有return $get_post_categories;
它根本不起作用。但我知道的是get_the_category_list()
自身正在返回数据。
因此,我处于一种笨拙的状态——不知道我做错了什么!如有任何帮助,我们将不胜感激。
最合适的回答,由SO网友:Otto 整理而成
第一个问题是IF语句中的括号不正确。
if ( ( $get_post_categories = get_transient( \'this_blog_categories\' ) === FALSE ) )
应该是:
if ( ( $get_post_categories = get_transient( \'this_blog_categories\' ) ) === false )
您希望分配该值,然后测试该值是否为false。由于括号不正确,您要做的是将transient与false进行比较,然后将比较结果分配给$get\\u post\\u类别。在PHP中,比较的优先级高于赋值。
这可能会解决您的问题。但是,这里还有另一个问题:
set_transient( \'this_blog_categories\', $get_post_categories );
瞬态应具有到期时间。否则,瞬态将永远不会过期,也永远不会刷新数据。