存储来自查询的帖子,并在以后通过AJAX调用访问

时间:2016-02-13 作者:BarberCraig

为了澄清上述问题的标题,我正在尝试创建一个帖子网格,为此我将显示一个附在该帖子上的图像缩略图。

然后,单击网格中的每个图像后,我想通过JS在网格项下显示帖子的其余内容(包含自定义字段数据)。

我所有的前端代码都正常工作。然而,我想做的是设置后端以查询帖子一次(最初在创建网格时),然后在显示每篇帖子的预览时,将每篇帖子所需的其余字段拉入预览HTML并显示出来。

所以在后端,我想做的是:

加载页面时,在DB中查询帖子并将其存储在PHP中的某个位置。在数组或对象中

  • 单击缩略图后,进行AJAX调用(传递帖子ID),并通过JSON从该帖子ID的对象数组返回字段

    提前谢谢Craig

  • 1 个回复
    最合适的回答,由SO网友:cybmeta 整理而成

    页面加载是一个请求,由软件运行,给出响应并关闭执行。后来,Ajax是另一个完全分离的请求。如果希望对象在请求之间始终可用,则只有两个选项:使用transients API 或使用object cache API 与缓存插件结合使用(默认情况下,对象缓存api不是持久的)。

    瞬态API的一个非常基本的示例:

    if( false === ( $my_object = get_transient(\'transient_object_name\') ) ) {
    
        // Build your $my_object here
        // For example
        $args= array();
        $query = new WP_Query( $args );
    
        $my_object = $query->get_results();
    
        // Store $my_object in a transient
        set_transient(\'transient_object_name\', $my_object );
     }
    
    然后,稍后,您可以使用get_transient(\'transient_object_name\') 获取之前存储的瞬态。

    瞬态API将对象存储在数据库(选项表)中,以便在后续请求中获取该对象,而无需新的数据库调用(一个数据库调用获取瞬态对象,但不是构建对象的完整操作)。

    对象缓存API非常相似,但默认情况下不是持久的。它将缓存的对象存储在内存中,而不是存储在数据库中,并且仅为当前请求缓存对象。要使其在分离的请求之间持久化,需要使用一些持久缓存插件,如W3TC。

    如果有一个持久缓存插件可用,瞬态API将停止在数据库中存储瞬态,并与对象缓存API完全相同,存储在内存中,但存储在内存中的数据现在在这两种情况下都是持久的。