通过变量值设置WordPress瞬时过期

时间:2021-03-05 作者:Ava Juan

我想通过变量值设置WordPress瞬态。

这是我试图实现的示例代码。

<?php 
    if ( false === get_transient( \'special_query_results\' ) ) {
        
        $ExpiryInterval = "24 * HOUR_IN_SECONDS"; // <--- Storing in Variable

        $RandPostQuery = new WP_Query(array(\'post_type\'=>array(\'tip\'),\'posts_per_page\' => 1,\'orderby\'=>\'rand\'));

        set_transient( \'special_query_results\', $RandPostQuery , $ExpiryInterval ); // <-- Retriving from Variable
    }
?>
我不知道为什么它不起作用。如果我尝试直接设置而不使用变量,它会工作得很好。不知道为什么它不能这样工作。

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

$ExpiryInterval = "24 * HOUR_IN_SECONDS";
$ExpiryInterval 正在分配一个字符串,但您需要一个数字。

考虑以下示例:

$foo = 5 * 10;
$bar = "5 * 10";
的价值$foo50. 的价值$bar"5 * 10". set_transient 需要数字,而不是字符串,"24 * HOUR_IN_SECONDS" 是文本/字符串,24 * HOUR_IN_SECONDS 是一个数字。HOUR_IN_SECONDS 是一个常数,等于一小时内的秒数。

SO网友:vancoder

HOUR_IN_SECONDS 是一个WordPress constant - 您不能将常量放在变量中,并期望PHP在解析时知道它是常量而不是字符串。在您的示例代码中,我将简化它:

set_transient( \'special_query_results\', $RandPostQuery , 24 * HOUR_IN_SECONDS );