现在,我使用set\\U瞬态功能将WP\\U查询存储24小时(1天)。一切正常。但是,例如,如果我将存储数组中的post更改为private或修改其meta\\u值,则仍会在前端看到该post。
有没有办法检查post值是否已修改?或者我应该使用其他函数?
代码:
if (false === ($loop = get_transient(\'randomizeProfiles\'))) {
$loop = new WP_Query(array(
\'post_type\' => \'portfolio\',
\'posts_per_page\' => 18,
\'orderby\' => \'rand\',
\'order\' => \'ASC\',
\'post_status\' => \'publish\',
\'meta_query\' => array(
\'relation\' => \'OR\',
array(\'key\' => \'move_to_archive\',\'compare\' => \'NOT EXISTS\'),
array(\'key\' => \'move_to_archive\', \'value\' => \'0\', \'compare\' => \'=\')
)
));
$hour = carbon_get_theme_option(\'posts_hours\');
$time = 60 * 60 * $hour;
set_transient(\'randomizeProfiles\', $loop, $time);
}
SO网友:matija
使用save\\u post挂钩检查正在保存的帖子是否是公文包页面,并重置瞬态。
add_action( \'save_post\', \'reset_portfolio_transient\', 10,3 );
function reset_portfolio_transient( $post_id, $post, $update ) {
// Only set for portfolio post_type
if ( \'portfolio\' !== get_post_type($post) ) {
return;
}
// delete old tranisent
delete_transient( \'randomizeProfiles\' );
// reset your transient
set_portfolio_query_tranisent();
}
set_portfolio_query_tranisent()
是您已经提供的代码。
如果你经常编辑公文包页面,这不是一个很好的解决方案。您可能需要阅读wordpress codex中关于瞬态的内容,以寻找替代方法。